pim*_*vdb 11 javascript undefined
看起来它window.undefined是可写的,即它可以设置为其默认值以外的其他值(不出所料undefined).
然而,关键在于,每当我提到undefined它时,它指的是window.undefined(window在这种情况下可以删除).
那么我该如何实际访问undefined"实例"呢?undefined如果window.undefined已更改,我将如何设置另一个变量?
如果我编码:
window.undefined = 'foo'; // This code might have been executed by someone/something
var blah = undefined; // blah is not undefined, but equals to 'foo' instead...
Run Code Online (Sandbox Code Playgroud)
我怎么可能解决这个问题?
hug*_*omg 17
这个问题的"标准"解决方案是使用内置void运算符.它的唯一目的是返回undefined:
var my_undefined = void 0;
Run Code Online (Sandbox Code Playgroud)
除此之外,还有其他方法可以获得undefined:
如果你什么都不做,函数会返回undefined,return所以你可以做类似的事情
this_is_undefined = (function(){}());
Run Code Online (Sandbox Code Playgroud)
如果没有向函数传递足够的参数,也会得到未定义.所以一个常见的习语是
function foo(arg1, arg2, undefined){ //undefined is the last argument
//Use `undefined` here without worrying.
//It is a local variable so no one else can overwrite it
}
foo(arg1, arg2);
//since you didn't pass the 3rd argument,
//the local variable `undefined` in foo is set to the real `undefined`.
Run Code Online (Sandbox Code Playgroud)
这种情况特别适用于同时定义和调用函数的情况,因此您不会有遗忘和传递错误数量的参数的风险.
use*_*716 17
除了其他解决方案,你可以做到这一点void 0,undefined无论window属性如何,它总是返回.
window.undefined = 'foo';
var blah = void 0;
alert( blah ); // undefined
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2390 次 |
| 最近记录: |