Javascript 调用函数-何时可以省略引用对象?
我正在学习javascript,我注意到在某些对象/类上调用内置函数时,有时会忽略引用,但有时会导致代码中断。例如在Javascript 调用函数-何时可以省略引用对象?,javascript,function,Javascript,Function,我正在学习javascript,我注意到在某些对象/类上调用内置函数时,有时会忽略引用,但有时会导致代码中断。例如在 document.write("<p>calling 'write' of the current document object</p>") 您可以省略“窗口”和“编号”以成为 var x=prompt("enter a value") isNaN(x) 为什么这两种情况不同 谢谢窗口是web浏览器的全球范围 MDN对此有很好的解释: isNaN在窗
document.write("<p>calling 'write' of the current document object</p>")
您可以省略“窗口”和“编号”以成为
var x=prompt("enter a value")
isNaN(x)
为什么这两种情况不同
谢谢
窗口
是web浏览器的全球范围
MDN对此有很好的解释:
isNaN
在窗口下也可用,但它与Number.isNaN
的功能不同。运行isNaN==Number。isNaN
会导致false
在JavaScript中,所有全局对象实际上都是“全局对象”的属性。在web浏览器环境中,该全局对象有一个属性,window
,它用来引用自身。所以提示符
指的是全局提示符
<代码>窗口。提示
指的是全局的窗口
,然后指的是它的提示
属性,这与此相同。因此,窗口。
在检索全局变量的值时是多余的(除非全局变量已被本地或中间声明隐藏)
Number.isNaN
情况大不相同:从JavaScript开始到当前规范(ES5),没有Number.isNaN
函数;只是,这是全球性的。在Number
构造函数上执行isNaN
的操作,但不首先将其参数转换为数字
例如:
console.log(isNaN("foo")); // true
console.log(Number.isNaN("foo")); // false
第一个表示
true
,因为独立的isNaN
在执行检查之前将其参数强制为一个数字;由于Number(“foo”)
是NaN
,因此检查返回trueNumber.isNaN
表示false,因为它不强制,所以它检查的根本不是一个数字,所以不能是特殊的NaN
Number值。窗口对象是浏览器中Javascript中的全局范围。文档
对象不可用。(您可以直接使用文档
的原因是它实际上是窗口。文档
和窗口
引用可以省略。)
您可以使用
isNaN
并指定Number
对象和不指定Number
对象的原因是既有a又有a(ECMAScript下一版本的一部分)。它们是相似的,但并不完全相同。document
等于window.document
。在浏览器中,全局范围指的是窗口
,因此您可以省略窗口
实际上,这是两种不同的功能
是ES6函数,但另一个全局函数已经存在。此功能的ES6版本提供了判断x是否为NaN的方法谢谢大家的快速回复!
console.log(isNaN("foo")); // true
console.log(Number.isNaN("foo")); // false