解释如果Type(x)是Undefined,返回true.如果Type(x)为Null,则返回true
Javascript: Explain If Type(x) is Undefined, return true. If Type(x) is Null, return true
JavaScript规范:http://www.ecma-international.org/publications/standards/Ecma-262.htm
11.9.6严格相等比较算法
比较x === y,其中x和y是值,产生真或假的。这样的比较执行如下:
- 如果Type(x)和Type(y)不一致,返回false。
- 如果Type(x)是Undefined,返回true
- 如果Type(x)为Null,返回true
- 如果Type(x)为Number,则
- 如果x是NaN,返回false。
- 如果y是NaN,返回false。
- 如果x和y是相同的Number值,返回true。
- 如果x为+0,y为-0,返回true。
- 如果x为-0,y为+0,返回true。
- 返回false。
- 如果Type(x)是String,那么如果x和y是完全相同的字符序列(相同的长度和相同的字符),则返回true相应的位置);
- 如果Type(x)是布尔值,如果x和y都为真或都为假则返回真;
- 如果x和y引用同一对象则返回true。否则,返回false。该算法与SameValue algorithm(9.12)不同。对有符号零和nan的处理
加粗的部分是什么意思?您如何编写一些JavaScript来确认它?我试过alert(typeof(undefined) === 'x');
,但它给我false
。
前面写着:
其中
x
和y
为值
首先,给出x
和y
的值。
那就忘了"废话"吧,1是重要的。x
和y
必须是相同的类型才能通过步骤1。
步骤2是"If Type(x) is Undefined, return true."
只有一个值给出了未定义的类型,undefined
。因此,测试步骤2(没有将undefined
赋值给变量)的唯一方法是:
alert(undefined === undefined)
…将为真。
步骤3以完全相同的方式工作。唯一的空值是null
。
alert(null === null)
算法的手动实现将像这样开始:
function equalsequalsequals(x, y)
if (typeof x != typeof y) {
return false;
} else if (typeof x == "undefined") {
return true;
} // …
typeof运算符不能告诉我们某项是否为空,所以如果不使用===
,就不能完全实现该算法。因为我们有===
,但是,我们不需要。
我的解释是将规范视为一种形式证明,让数字2和3依赖于第一条规则:
- 如果Type(x)和Type(y)不一致,返回false。
由于您在第2步并且没有返回false
,因此X的类型必须与Y的类型相同,因此它检查的条件是:
(null) === (null)
返回true
。Undefined
Type()
是一个内部方法,在javascript代码中不可用。不是与typeof
操作符相同。
x
和y
分别为===
的左、右操作数。它们不是字符串'x'
和'y'
。
http://es5.github.com/x11.9.6
- 对于loop.if-仅在经过所有间隔后返回true
- 如果函数返回True,则显示Javascript按钮
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 过滤器返回true或false
- 我对“;返回true"嵌套函数内部;t工作
- 如何在成功输入时使“返回TRUE”
- 检查一个元素是否有一个类与另一个类总是返回true
- JavaScript函数未返回true
- 如果URL中有任何字符串变体匹配,则返回true
- 如何使以下函数返回true或false
- 使用“in”关键字检查 0 始终返回 true
- hasOwnProperty 在对照父对象属性进行检查时返回 true
- 为什么 isNaN 总是返回 true
- _.数组中的每个查找值都返回 true 或 false.使用下划线 JS
- 错误地返回true
- 为什么asp:LinkButton服务器端事件没有'当clientClick返回true时,t激发
- 阻止表单提交 javascript 为什么有一个明显的错误语句返回 true
- Node js命令器args返回true而不是值
- 如何将html表单与php链接,以便在例如单击按钮时返回true
- 从OnClientClick调用函数时,在JavaScript中返回true