我试图理解javaScript语言的结构。
有人可以告诉我:
我知道isNaN()是Number构造函数的一个方法。
那么,以下两个例子是如何工作的呢?
console.log(isNaN(3));
或
if(isNaN(3)) {
console.log(`3 is *not* a number`);
} else {
console.log(`3 is a number`);
}
窗口上有否 isNaN()函数 - >即window.isNaN()不存在。
你不是在写3.isNaN()或Number.isNaN(3)
如何单独编写isNaN()函数(或任何其他Number方法),您是否能够访问Number构造函数?
对比:
实现String方法时,将其从实际字符串中删除,因此String方法由此字符串方法继承。例如:
let littleString = 'I am a string'.toLowerCase();
你不能写:
toLowerCase('I am a little string');
或者你会收到错误:
ReferenceError: Can't find variable: toLowerCase
那么,为什么你能用数字做这个呢?
谢谢!
答案 0 :(得分:3)
我了解
上没有isNaN()
是Number
构造函数的一种方法,isNaN()
window
函数
没有。实际上有两个isNaN
函数(甚至它们的工作方式不同):
答案 1 :(得分:2)
全局函数 - 全局调用而不是对象调用的函数 - 直接将其结果返回给调用者。
{
type: 'morning',
name: 'some person',
id: 'person db index',
}
是一个全局函数,但isNaN
不是。
请参阅global functions:
toLowerCase
由于eval()
uneval() // not standardized
isFinite()
isNaN()
parseFloat()
parseInt()
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
escape() // deprecated
unescape() // deprecated
是toLowerCase()
构造函数的原型,因此需要在字符串上调用此方法。
实际上,String
是全局定义的(继承自window对象),也是Number构造函数。