《JavaScript启示录》——1.16 typeof操作符

1.16 typeof操作符

typeof操作符用于返回正在使用值的类型。但它返回的值并不一致,或者说,逻辑上不一致。下面的代码展示了使用typeof操作符所返回的值。

<!DOCTYPE html><html lang="en"><body><script>

// 原始值
var myNull = null;
var myUndefined = undefined;
var primitiveString1 = "string";
var primitiveString2 = String('string');
var primitiveNumber1 = 10;
var primitiveNumber2 = Number('10');
var primitiveBoolean1 = true;
var primitiveBoolean2 = Boolean('true');

console.log(typeof myNull); // 输出object,需要注意!!!
console.log(typeof myUndefined); // 输出undefined
console.log(typeof primitiveString1, typeof primitiveString2);
   // 输出string string
console.log(typeof primitiveNumber1, typeof primitiveNumber2);
   // 输出number number
console.log(typeof primitiveBoolean1, typeof primitiveBoolean2);
   // 输出boolean boolean

// 复杂值
var myNumber = new Number(23);
var myString = new String('male');
var myBoolean = new Boolean(false);
var myObject = new Object();
var myArray = new Array('foo', 'bar');
var myFunction = new Function("x", "y", "return x * y");
var myDate = new Date();
var myRegExp = new RegExp('\\bt[a-z]+\\b');
var myError = new Error('Crap!');

console.log(typeof myNumber); // 输出object
console.log(typeof myString); // 输出object
console.log(typeof myBoolean); // 输出object
console.log(typeof myObject); // 输出object
console.log(typeof myArray); // 输出object
console.log(typeof myFunction); // 输出function,需要注意!!!
console.log(typeof myDate); // 输出object
console.log(typeof myRegExp); // 输出function,需要注意!!!
console.log(typeof myError); // 输出object

</script></body></html>

在这些值上使用该操作符时,考虑到正在使用的值(原始值或复杂值)的类型,我们应该特别注意潜在的返回值。

时间: 2024-10-02 23:56:59

《JavaScript启示录》——1.16 typeof操作符的相关文章

javascript实例教程:typeof操作符

鉴于ECMAScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型--typeof就是负责提供这方便信息的操作符.对一个值使用typeof操作符可能返回下列某个字符串: "undefined"--如果这个值未定义 "boolean"--如果这个值是布尔值 "string"--如果这个值是字符串 "number"--如果这个值是数值 "object"--如果这个是对象或null "fu

《JavaScript启示录》——导读

前言 本书无关于JavaScript设计模式,也无关于JavaScript面向对象代码实现.本书的写作目的也不是鉴别JavaScript语言特点的好坏.本书并不是一本完整的参考指南.它面向的读者人群并不是编程新手或对JavaScript完全陌生的人员.同时,它也不是一本JavaScript攻略手册.关于上述这些方面的书籍都已经面世. 本书的撰写意图是通过考察原生JavaScript对象和不同环境对原生对象的支持的细微差别,来给读者展现准确的JavaScript世界观:复杂值.原始值.作用域.继承

javascript typeof 操作符

typeof 操作符 typeof 操作符(和 instanceof 一起)或许是 JavaScript 中最大的设计缺陷, 因为几乎不可能从它们那里得到想要的结果. 尽管 instanceof 还有一些极少数的应用场景,typeof 只有一个实际的应用(译者注:这个实际应用是用来检测一个对象是否已经定义或者是否已经赋值), 而这个应用却不是用来检查对象的类型.     注意: 由于 typeof 也可以像函数的语法被调用,比如 typeof(obj),但这并是一个函数调用.     那两个小括

javascript中typeof操作符和constucor属性检测

这篇文章主要介绍了javascript中typeof操作符和constucor属性检测的相关资料,需要的朋友可以参考下 *#type.js 代码如下: function Person(name, age) { this.name = name; this.age = age; } var d = {an: 'object'}; var a = ['apple', 'banana']; var f = function() {}; var s = 'David'; var n = 33; var

JavaScript中的typeof操作符用法实例

 在Web前端开发中,我们经常需要判断变量的数据类型.鉴于ECMAScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型--typeof就是负责提供这方便信息的操作符. 对一个值使用typeof操作符可能返回下列某个字符串: "undefined"--如果这个值未定义 "boolean"--如果这个值是布尔值 "string"--如果这个值是字符串 "number"--如果这个值是数值 "object&

javascript中typeof操作符和constucor属性检测_javascript技巧

*#type.js 复制代码 代码如下: function Person(name, age) {  this.name = name;  this.age = age; } var d = {an: 'object'}; var a = ['apple', 'banana']; var f = function() {}; var s = 'David'; var n = 33; var b = true; var o = new Object(); var person = new Pers

C#的typeof操作符

typeof操作符用于获得系统原型对象的类型 例如: 程序清单7-9: using System; class Test { static void Main(){ Console.WriteLine(typeof(int)); Console.WriteLine(typeof(System.Int32)); Console.WriteLine(typeof(string)); Console.WriteLine(typeof(double[])); }; } 产生如下输出. Int32 Int

typeof操作符

鉴于ECMAScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型--typeof就是负责提供这方便信息的操作符.对一个值使用typeof操作符可能返回下列某个字符串: "undefined"--如果这个值未定义 "boolean"--如果这个值是布尔值 "string"--如果这个值是字符串 "number"--如果这个值是数值 "object"--如果这个是对象或null "fu

JavaScript中诡异的delete操作符

 这篇文章主要介绍了JavaScript中诡异的delete操作符,本文讲解了删除对象的属性.对数组的操作.对于变量的操作等内容,需要的朋友可以参考下     delete这个操作符呢,在javascript中不是很常用,但是他的特性的确很诡异. 1,删除对象的属性,代码: 代码如下: var o = { a: 1, b: 2 }; delete o.a; alert(o.a); //undefined   那么到底delete删除的是对象的属性还是对象的属性值呢,我开始觉得删除的应该是值,因为