We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
javascript有两个常见的类型运算符:typeof 和 instanceof。 通常他们的作用是不同的。
基本类型总共有六种,它们分别是 number boolean string function object undefined
运算格式:
typeof xxx
比如
typeof 1
会得到
"number"
根据我们typeof 1的结果,我们可以看到我们得到的是一个字符串。
> typeof 1 "number" > typeof Nan "undefined" > typeof NaN "number" > typeof 0.1 "number" > typeof true "boolean" > typeof false "boolean" > typeof 'aaa' "string" > typeof function() {} "function" > typeof {} "object" > typeof [] "object"
所以判断一个变量是不是定义是一个必须的功能。
而typeof可以提供这样的能力。
这时typeof xxx的值是'undefined'
> typeof xxx "undefined"
而如何使用任何其它的方式,都会报错。所以用来判断一个变量是不是存在,typeof是最佳的选择。
所以可以使用instanceof的都必须是对象。所以不属于object类型的基本类型是无法应用instanceof的,或者无法得到你想要的结果。
比如:
> 1 instanceof Number false
你要想得到正确的结果,需要这样做:
> new Number(1) instanceof Number true
所以如果你的运算内容不是对象,你就无法得到正确的结果。同样的效果如下:
'string' instanceof String false new String('string') instanceof String true
instanceof 是一个二元运算符,左边a是被运算的值,右边b是运算的类型。格式是这样的
a instanceof b
所以instanceof是一个判断,而typeof是求值。
> NaN instanceof Object false > undefined instanceof Object false > null instanceof Object false
我们可以看到所有的预定义类型都无法使用instanceof得到真的结果。
没有括号时,有些代码会被当成是一个语句,而不是一个表达式,从而让instanceof 缺少运算子而报错。 比如
function() {} instanceof Object
会被当成是
function() {}; instanceof Object
从而报错,这时加上()号就可以解决。
比如:
(function() {}) instanceof Object
运行结果如下:
> function() {} instanceof Object Uncaught SyntaxError: Unexpected token ( > (function() {}) instanceof Object true > {} instanceof Object VM1226:1 Uncaught SyntaxError: Unexpected token instanceof > ({}) instanceof Object true
function AA() {} var b = new AA(); b instanceof AA
这里的结果是:
true
typeof 与 instanceof 还是存在很多的差异的。它们的目的还是完全不同的。 所以使用时需要注意这些差异。
但是因为javascript并不是一个非常严谨的语言,从而导致很多不必要的混乱。
所以在使用这两个运算符时需要谨慎。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
javascript有两个常见的类型运算符:typeof 和 instanceof。
通常他们的作用是不同的。
typeof
用于判断基本类型
基本类型总共有六种,它们分别是
number
boolean
string
function
object
undefined
是一元运行符
运算格式:
比如
会得到
返回结果是类型的字符串
根据我们
typeof 1
的结果,我们可以看到我们得到的是一个字符串。一些简单的例子
判断是不是已经被定义
所以判断一个变量是不是定义是一个必须的功能。
而typeof可以提供这样的能力。
这时
typeof xxx
的值是'undefined'而如何使用任何其它的方式,都会报错。所以用来判断一个变量是不是存在,typeof是最佳的选择。
instanceof
用于判断对象的类型
所以可以使用instanceof的都必须是对象。所以不属于object类型的基本类型是无法应用instanceof的,或者无法得到你想要的结果。
比如:
你要想得到正确的结果,需要这样做:
所以如果你的运算内容不是对象,你就无法得到正确的结果。同样的效果如下:
二元运算符
instanceof 是一个二元运算符,左边a是被运算的值,右边b是运算的类型。格式是这样的
返回结果是布尔值(Boolean):true/false
所以instanceof是一个判断,而typeof是求值。
示例
基本类型与一些特殊类型无法得到真的结果
我们可以看到所有的预定义类型都无法使用instanceof得到真的结果。
需要注意前置的运算子
没有括号时,有些代码会被当成是一个语句,而不是一个表达式,从而让instanceof 缺少运算子而报错。
比如
会被当成是
从而报错,这时加上()号就可以解决。
比如:
运行结果如下:
主要用来判断对象的关系,特别是自定义对象
比如:
这里的结果是:
小结
typeof 与 instanceof 还是存在很多的差异的。它们的目的还是完全不同的。
所以使用时需要注意这些差异。
但是因为javascript并不是一个非常严谨的语言,从而导致很多不必要的混乱。
所以在使用这两个运算符时需要谨慎。
The text was updated successfully, but these errors were encountered: