当前位置: 首页 > 科技观察

一文看懂JavaScript中Typeof的用法

时间:2023-03-23 11:44:24 科技观察

基础typeof运算符是JavaScript的基础知识点。虽然它有一定的局限性(见下文),但在前端js的实际编码过程中还是用得比较多的类型判断方法。因此,掌握这个运算符的特点,对于写出好的代码会有很大的帮助。typeof返回一个字符串,指示操作值的数据类型。基本语法:typeofoperandtypeof(operand)可能返回类型字符串:string,boolean,number,bigint,symbol,undefined,function,object。下面将根据可能的返回类型对返回类型进行分类介绍,使用typeof的方法将一一列举。字符串和布尔值字符串和布尔值分别返回字符串和布尔值。包括String()和Boolean()。typeof'1'//'string'typeofString(1)//'string'typeoftrue//'boolean'typeofBoolean()//'boolean'number和bigint数字返回数字,包括Number()、NaN和Infinity等。,和Math对象下的每个数学常量值。BigInt数值类型值返回bigint,包括BigInt(1)。typeof1//'number'typeofNaN//'number'typeofMath.PI//'number'typeof42n//'bigint'typeofBigInt(1)//'bigint'symbol符号值返回符号,包括Symbol()。typeofSymbol()//'symbol'typeofSymbol('foo')//'symbol'typeofSymbol.iterator//'symbol'undefinedundefined本身返回undefined。不存在或已定义但未分配初始值的变量将返回未定义。还有浏览器非标准功能,如document.all。typeofundefined//'undefined'typeoftttttt//'undefined'typeofdocument.all//'undefined'函数返回函数。包括使用es6的class类声明的。以及各种内置对象String、Number、BigInt、Boolean、RegExp、Error、Object、Date、Array、Function、Symbol本身。和函数(),新函数()。functionfunc(){}typeoffunc//'function'typeofclasscs{}//'function'typeofString//'function'typeofRegExp//'function'typeofnewFunction()//'function'对象对象,数组,null,正则表达式,Both返回对象。包括Math,jsON对象本身。除了Function之外,还有使用new运算符的数据。typeof{}//'object'typeof[]//'object'typeofnull//'object'typeof////'object'typeofMath//'object'typeofnewNumber(1)//'object'other关于其他大对于某些JavaScript关键字,结果值都是对象或函数。注意:小写字母多以object对象开头,大写字母多以method函数开头。清楚知道的常用方法不算,比如alert、prompt等方法。此外,还有在各个js环境中专门实现的宿主对象。常见问题引用错误在定义let和const块作用域变量之前使用typeof将引发ReferenceError。因为块级作用域变量在初始化前会在头部形成一个临时死区,否则会报引用错误。typeoftlett=1//VM327:1UncaughtReferenceError:tisnotdefined//at:1:1如果使用var定义变量,不会报错,返回undefined。通过变量提升,不会形成临时死区。typeofnull对于typeofnull==='object',只要记住,可能的解释:在JavaScript的初始实现中,JavaScript中的值是由表示类型和实际数据值的标签表示的。对象的类型标号为0。由于null表示空指针(在大多数平台上为0x00),null的类型标号为0,因此typeofnull返回“object”。typeof的局限性typeof的局限性在于不能准确判断null、array、object、regular的类型。因此,要想准确判断,就需要借助其他技术手段,或者结合判断。如下,判断数组类型:Object.prototype.toString.call([])//'[objectArray]'[]instanceofArray//true[].constructor===Array//true其中,Object.prototype。toString.call是javascript中准确判断数据类型的通用方法。Extension:BigInttypeBigInt来自于ES11最新加入的一个基本类型,可以表示任意精度的整数。它提供了一种表示大于2^53-1的整数的方法,并且可以表示任意大的整数。它是通过将n附加到整数的末尾或通过调用构造函数BigInt()创建的。IE不支持它。10nBigInt(99)//99n注意:BigInt可以使用运算符+、*、-、**和%。除了>>>(无符号右移)之外的位操作也被支持。因为BigInt已签名。BigInt不支持一元(+)运算符,会报类型错误。您不能在BigInt上的Math对象中使用方法。BigInt不能和Number混用,否则会抛出TypeError。将BigInt转换为布尔值时,它的行为类似于数字。BigInt变量在转换为Number变量时可能会丢失精度。typeof返回bigint。使用Object和String等内置对象转换时,它类似于Number数字。当BigInt使用/除法时,小数运算会四舍五入。Number和BigInt是可以比较的,不是严格相等的。JSON.stringify处理BigInt抛出TypeError。

最新推荐
猜你喜欢