题
我试过做一个非常简单的生活,
<script type="text/javascript">
var obj = new Object;
(function(_obj) {_obj.prop = 'defined';})(obj);
if(typeof obj.prop === undefined)
alert('undefined');
else
alert(obj.prop);
</script>
为什么脚本会导致"undefined"而不是"defined"?
@编辑
脚本应该按预期工作,除了:
- 意料之外的
typeof obj.prop === undefined
是错的,但是obj.prop === undefined
应改为使用。 当省略下面的括号时,脚本不能按预期工作,但没有从rhino引发语法错误。
function(_obj) {_obj.prop = 'defined';}(obj);
解决方案
您的代码警报 'defined'
但出于错误的原因。
这个。..
typeof obj.prop === undefined
应该是这个。..
obj.prop === undefined
...因为 typeof
返回表示对象类型的字符串。
不要使用 typeof
测试时的黑客攻击 undefined
.它令人困惑,并且可能是您遇到的错误的来源。
如果你这么担心的话 undefined
被重新定义,然后这样做。..
obj.prop === void 0
其他提示
应该是:
if ( typeof obj.prop === 'undefined' )
.
typeof
运算符返回字符串。
typeof
返回一个字符串。所以,你需要;
if(typeof obj.prop === "undefined")
.
代码似乎在修复此问题后按预期工作: http://jsfiddle.net/jfriend00/kjbjg /
不隶属于 StackOverflow