• 技术文章 >web前端 >前端问答

    javascript的typeof可返回哪些数据类型

    青灯夜游青灯夜游2021-12-08 17:00:57原创716

    在javascript中,typeof操作符可返回的数据类型有:“undefined”、“object”、“boolean”、“number”、“string”、“symbol”、“function”等。

    本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

    使用 typeof 操作符可以返回变量的数据类型。

    我们来看看各个数据类型对应typeof的值:

    数据类型结果
    Undefined“undefined”
    Null“object”
    布尔值“boolean”
    数值“number”
    字符串“string”
    Symbol (ECMAScript 6 新增)“symbol”
    宿主对象(JS环境提供的,比如浏览器)Implementation-dependent
    函数对象“function”
    任何其他对象“object”

    再看看具体的实例:

    // Numbers
    typeof 37 === 'number';
    typeof 3.14 === 'number';
    typeof Math.LN2 === 'number';
    typeof Infinity === 'number';
    typeof NaN === 'number'; // 尽管NaN是"Not-A-Number"的缩写,意思是"不是一个数字"
    typeof Number(1) === 'number'; // 不要这样使用!
    
    // Strings
    typeof "" === 'string';
    typeof "bla" === 'string';
    typeof (typeof 1) === 'string'; // typeof返回的肯定是一个字符串
    typeof String("abc") === 'string'; // 不要这样使用!
    
    // Booleans
    typeof true === 'boolean';
    typeof false === 'boolean';
    typeof Boolean(true) === 'boolean'; // 不要这样使用!
    
    // Symbols
    typeof Symbol() === 'symbol';
    typeof Symbol('foo') === 'symbol';
    typeof Symbol.iterator === 'symbol';
    
    // Undefined
    typeof undefined === 'undefined';
    typeof blabla === 'undefined'; // 一个未定义的变量,或者一个定义了却未赋初值的变量
    
    // Objects
    typeof {a:1} === 'object';
    
    // 使用Array.isArray或者Object.prototype.toString.call方法可以从基本的对象中区分出数组类型
    typeof [1, 2, 4] === 'object';
    
    typeof new Date() === 'object';
    
    // 下面的容易令人迷惑,不要这样使用!
    typeof new Boolean(true) === 'object';
    typeof new Number(1) ==== 'object';
    typeof new String("abc") === 'object';
    
    // 函数
    typeof function(){} === 'function';
    typeof Math.sin === 'function';

    我们会发现一个问题,就是typeof来判断数据类型其实并不准确。比如数组、正则、日期、对象的typeof返回值都是object,这就会造成一些误差。

    所以在typeof判断类型的基础上,我们还需要利用Object.prototype.toString方法来进一步判断数据类型。

    我们来看看在相同数据类型的情况下,toString方法和typeof方法返回值的区别:

    数据toStringtypeof
    “foo”Stringstring
    new String(“foo”)Stringobject
    new Number(1.2)Numberobject
    trueBooleanboolean
    new Boolean(true)Booleanobject
    new Date()Dateobject
    new Error()Errorobject
    new Array(1, 2, 3)Arrayobject
    /abc/gRegExpobject
    new RegExp(“meow”)RegExpobject

    可以看到利用toString方法可以正确区分出Array、Error、RegExp、Date等类型。

    所以我们一般通过该方法来进行数据类型的验证。

    【相关推荐:javascript学习教程

    以上就是javascript的typeof可返回哪些数据类型的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:javascript中title属性的用法是什么 下一篇:javascript中writeln和write的区别是什么
    PHP编程就业班

    相关文章推荐

    • javascript怎么判断字符串是否全为0• javascript怎么删除非数字的字符• JavaScript字符串对象的方法有哪些• JavaScript是非脚本语言吗• 什么是JavaScript事件类型• go属于javascript么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网