Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调用函数-何时可以省略引用对象?_Javascript_Function - Fatal编程技术网

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在窗

我正在学习javascript,我注意到在某些对象/类上调用内置函数时,有时会忽略引用,但有时会导致代码中断。例如在

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
,因此检查返回true
Number.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