给定x=JavaScript中的x。什么是';x';?
我在一次JavaScript采访中被问到 如果给定x=JavaScript中的x。什么是';x';?,javascript,Javascript,我在一次JavaScript采访中被问到 如果x=x为真,x的可能类型是什么 面试官告诉我,x只有一种可能的类型可以得到这个结果。值是NaN,属于类型编号 用于比较平等性的: 如果x为NaN,则返回false NaN永远不等于任何东西,包括它本身 如果x=x为真,x的可能类型是什么 假设x是一个变量,这个问题的答案是: "number" 满足此要求的唯一值是NaN,它从不等于自身 如您所见,NaN的类型是“number”: typeof NaN==“number” 如果x只是任何内容的占位符
x=x
为真
,x的可能类型是什么
面试官告诉我,
x
只有一种可能的类型可以得到这个结果。值是NaN
,属于类型编号
用于比较平等性的:
如果x为NaN,则返回false
NaN
永远不等于任何东西,包括它本身
如果x=x
为真
,x的可能类型是什么
假设x
是一个变量,这个问题的答案是:
"number"
满足此要求的唯一值是NaN
,它从不等于自身
如您所见,NaN
的类型是“number”
:typeof NaN==“number”
如果
x
只是任何内容的占位符,那么函数和对象或数组文字也可以:
(function(){}) != (function(){})
({}) != ({})
[] != []
如果
x
可以成为一个getter,那么有各种疯狂的选项:
// Type == "string"
Object.defineProperty(window, 'x', {
get: function() { return String.fromCharCode(Math.random() * 0xFFFF | 0); }
});
// Type == "boolean"
Object.defineProperty(window, 'x', {
get: function() { return !(Math.random() * 2 | 0); }
});
// Type == "function"
Object.defineProperty(window, 'x', {
get: function() { return function() {}; }
});
// Type == "object"
Object.defineProperty(window, 'x', {
get: function() { return ({}); }
});
// Type == "object"
Object.defineProperty(window, 'x', {
get: function() { return []; }
});
将与一起使用:
var o={};
Object.defineProperty(o,'x'{
get:function(){return[];}//上述任何类型
});
带(o){
警报(x!=x);
}
Object.defineProperty(窗口,'x',{get:function(){return Math.random();}})
下一个访谈问题:当问题提到类型时,对以下@Cerbrus执行代码复查。让我们再填写几个字符串,Object.defineProperty(窗口,'x',{get:function(){return String.fromCharCode(Math.random())*0xFFFF | 0);}}}
,Bool,Object.defineProperty(window,'x',{get:function(){return!(Math.random()*2 | 0);}}}}
,functionObject.defineProperty(window,'x',{get:function(){return function(){return function(){}}}}})
请随意在这个答案中加入我的注释中的代码。您还可以使用语句提及with
语句with
语句?如果您有var o={}
,那么定义属性x ono
,然后使用(o){x!=x;}
,您就不再需要全局属性object@PaulS.:漂亮!加:D