2026/4/17 8:00:52
网站建设
项目流程
网站所在服务器,wordpress 加密文章,番禺厂家搜索seo,免费有限公司文章目录JavaScript有哪些数据类型#xff1f;如何判断一个变量的数据类型#xff1f;1.JavaScript 的原生值 (primitive values)1.1 字符串 String1.2 布尔值 Boolean1.3 Number1.4 BigInt1.5 Undefined1.6 Null1.7 Symbol2.JavaScript中的对象(objects)3. 如何辨别一个变量…文章目录JavaScript有哪些数据类型如何判断一个变量的数据类型1.JavaScript 的原生值 (primitive values)1.1 字符串 String1.2 布尔值 Boolean1.3 Number1.4 BigInt1.5 Undefined1.6 Null1.7 Symbol2.JavaScript中的对象(objects)3. 如何辨别一个变量的数据类型3.1 使用typeof判断变量的数据类型3.2 判断变量是对象还是数组JavaScript有哪些数据类型如何判断一个变量的数据类型JavaScript 有其内建的数据类型。其中又分为原生值primitive values和对象objects。1.JavaScript 的原生值 (primitive values)截至目前JavaScript 的资料型别中有七个原生值。这七个原生值以外的全都是属于对象。原生值是不可变的(immutable)意思是我们不能改变那个值本身。比如当我们“修改”原始值时实际上是让变量重新绑定到一个新的值而不是在原值上进行修改。letgreetingHi;greetingHello;// 此时虽然打印 greeting 是 Hello但是 Hi 这个值本身是没变的只是 greeting 指向了Hello 这个新值JavaScript 的型别中的七个原生值包含StringBooleanNullUndefinedNumberBigIntSymbol1.1 字符串 StringString (字符串)字串是最常见的原生值之一。如前面提到在JavaScript 当中字串本身是不可变的。当我们用substring()来撷取字串或用concat()来把两个字串合为一这些都是会回传另一个字串而非改变原本的字串。1.2 布尔值 BooleanBoolean (布尔值)有true与false两个值的布林值也是JavaScript 的原生值。1.3 NumberJavaScript 与一些语言不同没有分整数与浮点数而是都用number这个原生值。不论整数或浮点数都是number这个型别。在JavaScript 当中Infinity,-Infinity, 与 NaN 都是number这个型别所以我们用typeof来检查的话会得到number。console.log(typeofNaN);// number而number在JavaScript 是双精度浮点数所以精确度是介于-(2^53 − 1)与2^53 − 1之间。在这个范围之外就会有精准度的问题这时候要用另一个原生值BigInt。1.4 BigInt上面提到在JavaScript 的整数与浮点数都是用number这个型别这其实只说了一半。因为JavaScript 的number精准度有其限制虽然多数情况很够用(2^53 - 1会是9007199254740991我们很少用到比这大的数)。但有些时候会需要更往下的精准度。这时就可以用BigInt数值的型别。BigInt可以让我们任意选择其精准度就可以避免一些number会遇到的问题。它跟number一样可以用,*,-,**, 与%等运算子不过要注意不可以拿BigInt跟number型别的值交互使用这会出现TypeError。1.5 Undefinedundefined是一个类型它本身也是一个值。假如某个变量未声明就是用会出现索引错误ReferenceErrorconsole.log(a);ReferenceError:a is not defined用 let / const 声明了但在声明前使用console.log(a);leta1;ReferenceError:Cannot accessabefore initialization某个变量声明但是没有赋值letgreeting;console.log(greeting);// undefined1.6 Nullnull是很容易跟undefined搞混的原生值。undefined是因为某变数还没有赋值所以对JavaScript 来说它不知道该变数的值是什么所以要读取该变数时会是undefined。不过 则null是我们赋予某个变数null这一个值。1.7 Symbol最后一个JavaScript 原生值是Symbol它是一个独特(unique) 值多半会搭配物件一起使用作为物件的键(key)。constsymSymbol(ExplainYYDS);constobj{[sym]:Interview Preps for Software Engineers};obj[sym];// Interview Preps for Software Engineers2.JavaScript中的对象(objects)除了上述的七个原生值以外的存在在JavaScript 当中都是对象。JavaScript 圈有一个梗数组是对象函数是对象对象是对象。3. 如何辨别一个变量的数据类型3.1 使用typeof判断变量的数据类型要辨别一个变数的数据类型最常见的方式是透过typeof这个方法。举例来说typeof判断字符串。letgreetinghi;console.log(typeofgreeting);// stringtypeof 的两个注意点typeof 原生值返回的是该原生值的类型标识字符串但是 typeof null 结果不是 null而是object这个历史遗留的 bug修复成本太高了typeof 数组的结果是 object tpyeof 函数的结果是 functionconsole.log(typeofnull);// objectconsole.log(typeof[]);// objectconsole.log(typeoffunction(){});// function补充typeof结果的表格Type of valResultUndefined“undefined”Null“object”Boolean“boolean”Number“number”String“string”Object (native and does not implement [[Call]])“object”Object (native or host and does implement [[Call]])“function”Object (host and does not implement [[Call]])Implementation-defined except may not be “undefined”, “boolean”, “number”, or “string”.因为 typeof 无法判断数组和对象所以需要新的方法去判断某个变量是对象还是数组。3.2 判断变量是对象还是数组Array.isArray()是可以协助我们的方法。如果是数组会回传true但若是一般对象则会回传false。举例来说Array.isArray([1,2,3]);// trueArray.isArray({foo:123});// false我们也可以透过Object.prototype.toString()的方法帮助我们辨别数组、函数与一般对象。constarr[1,2,3];constfn(){return123;};constobj{foo:123};console.log(Object.prototype.toString.call(arr));// [object Array]console.log(Object.prototype.toString.call(fn));// [object Function]console.log(Object.prototype.toString.call(obj));// [object Object]