考虑以下...
var x = {};
x.undefined = "Hello World!";
var y;
//Prints "Hello World!"
console.log(x[y]);
Run Code Online (Sandbox Code Playgroud)
为什么会这样?是因为这样,它返回一个字符串而不是实际的未定义?
Roc*_*mat 18
当你这样做时,x.undefined你设置了一个x被叫属性'undefined'.它与undefined(保留字变量writable:false)共享名称的事实是巧合.
后来,当你做,console.log(x[y])你正在寻找y在x.对象的键是字符串,因此y转换为字符串.当undefined转换为字符串时,它变为'undefined'.这'Hello World!'就是返回的原因.
当使用表示法访问属性时.,属性名称不会被计算为表达式,而是一个文字字符串。
x.undefined
Run Code Online (Sandbox Code Playgroud)
相当于:
x['undefined']
Run Code Online (Sandbox Code Playgroud)
要设置键为 的属性undefined,您必须编写:
x[undefined] = "Bye, cruel world";
Run Code Online (Sandbox Code Playgroud)
有趣的是,Chrome 允许我这样做。
| 归档时间: |
|
| 查看次数: |
4420 次 |
| 最近记录: |