CMS*_*CMS 15
typeof实际上是一个运算符,而不是一个函数,它返回所提供的操作数的类型,并返回[1]一个字符串值,可以是:
"undefined""object""boolean""number""string""function"它看起来像一个函数,因为它可以应用于带括号的表达式,但是括号不是必需的,你可以在没有它们的情况下使用它:
typeof expression
Run Code Online (Sandbox Code Playgroud)
值得一提的是,你甚至可以引用一个未声明的标识符(一个不可解析的引用,例如一个永远不会声明的变量)并且它不会抛出一个ReferenceError,它只会产生"undefined",例如:
if (typeof imUndeclared == 'undefined') {
// Ok...
}
// Vs.
if (imUndeclared === undefined) { // ReferenceError!
}
Run Code Online (Sandbox Code Playgroud)
一个可能导致语言新手混淆的一个案例是typeof操作员返回"object"一个null值,你应该牢记这一点......
此外,如果您想区分Array对象,RegExp对象,Date对象等,它不是太有用,但还有其他方法可以实现它.
[1]臭名昭着的JScript(IE):)例外,它实际上可以返回"unknown"!对于某些主机对象,例如typeof new ActiveXObject("Msxml2.XMLHTTP").abort; // "unknown"
typeof运营商typeof是一个一元运算符(而不是函数),由ECMAScript标准定义,因此由大多数现有的JavaScript实现实现; 虽然从历史的角度来说,它是自1.1版本以来的JavaScript的一部分,之后它的所有权被移交给ECMA International.
它用于通过查询它(typeof expression)并检查返回值来内省变量的类型,返回值是一个string指示具有有损精度的类型的对象(见下文).
根据ECMAScript 5标准(ECMA-262,第71页),当使用以下类型的给定参数进行测试时,它将返回以下字符串值:
Undefined- > "undefined"Null- > "对象"Boolean- > "布尔"Number- > "数字"String- > "字符串"Object - >取决于:
Call- > "对象"Call- > "功能"Call- >实现定义,但可能不是 "未定义","布尔","数字"或"字符串"对于大多数实现,typeof还将返回:
Array- > "对象"Function- > "对象"(见上面Object的第2和第3例......)(请注意,类型是大写的,而他们的字符串标识符通过返回的typeof是不是)
typeof是有损的.typeof从ECMAScript 5开始,仍然不支持Array(在大多数情况下被识别为"对象".(参见Douglas Crockford的Remedial JavaScript)Function和Array变化.typeof.| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |