给定x=JavaScript中的x。什么是';x';?

给定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只是任何内容的占位符

我在一次JavaScript采访中被问到

如果
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);}}}}
,function
Object.defineProperty(window,'x',{get:function(){return function(){return function(){}}}}})
请随意在这个答案中加入我的注释中的代码。您还可以使用
语句提及
with
语句
with
语句?如果您有
var o={}
,那么
定义属性
x on
o
,然后
使用(o){x!=x;}
,您就不再需要全局属性object@PaulS.:漂亮!加:D