将窗口中的空字符串指定为属性是否有任何缺点?
例如:
window[""] = function() {
console.log("foo");
}
(); // will log foo
Run Code Online (Sandbox Code Playgroud)
编辑:当然,这会打破内容以便澄清.你可能想要这个:
window[""] = function(prop) {
console.log(prop);
return prop;
}
Run Code Online (Sandbox Code Playgroud)
进一步编辑:上面的代码是各种IIFE.哎呀.这就是我不喜欢自动分号插入的原因:
window[""] = function() {
console.log("foo");
}();
Run Code Online (Sandbox Code Playgroud)
您的代码没有按照您的想法运行.
();
Run Code Online (Sandbox Code Playgroud)
这实际上是一个语法错误.
试试看,看看:
window[""] = function() {
console.log("foo");
};
();
Run Code Online (Sandbox Code Playgroud)
您的代码实际上被解释为(在}和之间忽略空格()):
window[""] = function() {
console.log("foo");
}();
Run Code Online (Sandbox Code Playgroud)
其中运行匿名函数并将其返回值(undefined)设置为window[""].
这就是分号很重要的原因!
它是有效的将一个空的字符串作为一个对象的属性.但是,因为它不是有效的标识符(空字符串),所以如果不这样做就无法访问它window[""].
window[""] = function() {
console.log("foo");
};
window[""](); // logs "foo"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |