使用""设置javascript变量时

时间:2014-04-18 09:41:36

标签: javascript jquery syntax

我最近获得了这段javascript(作为jQuery函数的一部分)......

var h = "innerHeight" in window ? window.innerHeight : document.documentElement.offsetHeight;
var w = "innerWidth" in window ? window.innerWidth : document.documentElement.offsetWidth;

我以前从未见过"innerHeight" in,我找不到任何解释,或者为什么使用它。 (在Google上搜索单词in并不是很有帮助。)

是jQuery语法吗?

4 个答案:

答案 0 :(得分:5)

不,the in operator是核心JavaScript。

如果右侧的对象具有名称与左侧字符串匹配的属性,则它将解析为true

请参阅a simple example

var foo = {
    a: 1,
    b: undefined
}

var o = document.getElementById('output');

o.innerHTML = ("a" in foo) + "<br>" + 
    ("b" in foo) + "<br>" + 
    ("c" in foo) + "<br>";

答案 1 :(得分:2)

这是纯粹的JS。

这与object.property类似,略有不同。

object.property将在未设置属性的情况下失败,并且在已将其设置为某个错误值的情况下也将失败,例如undefined,null,0等

property in object略胜一筹,因为它没有找到它的价值。

答案 2 :(得分:2)

检查对象的属性是否存在。

in用于检查对象是否包含特定属性,这是由字符串提供的。

var obj={a:1,b:2}

// in
console.log('a' in obj); // true
console.log('c' in obj); // false

说...有更快/更短的方法。

// this does not work if the property's value is 0,null,undefined,false...
console.log(!!obj.a); // true  
console.log(!!obj.c); // false

<强>演示

http://jsfiddle.net/cLDEd/

在您的情况下,更好的解决方案是:

var H=window.innerHeight?window.innerHeight:document.documentElement.offsetHeight

甚至更好:

var H=window.innerHeight||document.documentElement.offsetHeight

理论上window.innerHeight可能是0,所以此时它会尝试获取document.documentElement.offsetHeight whitch返回undefined,你应该添加另一个或||0返回0而不是undefined。但这不会发生;)。

window.innerHeight放在document.documentElement.offsetHeight前加速检查,因为window.innerHeight是标准的,因此这是正确选择的可能性更高。

答案 3 :(得分:0)

您可以将其视为innerHeight <inside> window,然后window ....