JavaScript中七种数据类型·中·一

Posted zhangfl_go

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中七种数据类型·中·一相关的知识,希望对你有一定的参考价值。

Standing on Shoulders of Giants;

说到javascript里的类型很容易就让人想起 42和"42",分别是string型和number型,但是他们可以直接进行运算。这就是Js里面有趣又让人头疼的问题了。JavaScript会进行强制类型转换

下面我们就正式来认识一下JS中的类型吧:

1、内置类型

JavaScript有七种内置类型:

2、类型检测 typeof

1 typeof undefined === \'undefined\';//true
2 typeof \'abc\' === \'string\';//true
3 typeof 123 === \'number\';//true
4 typeof true === \'boolean\';//true
5 typeof {a:\'test\'} === \'object\';//true
6 typeof Symbol() === \'symbol\';//true

一共七种类型,六种都在上面了,还有谁呢?对,还有null。
null 比较特殊,用typeof 判断会出问题

    typeof null === \'object\';//true

照理说应该是typeof null 的返回值应该是\'null\',但是这个bug确实在js语言中客观存在。
如果要判断一个值是否是null,可以用下面的这种方式来检测:

 var a = null;
 if(!a&&typeof a === \'object\'){
     //此刻说明a的值是null
     
 }

null是“假值”,也是唯一一个用typeof检测会返回‘object’的基本类型值。
另两种种特殊情况是function和array

typeof function a(){} === \'function\';//true
typeof [1,2,3] === \'object\';//object

函数和数组都是对象的内置类型,算是object的‘子类型’。
函数可以拥有属性,例如a.length;//0;

2、值和类型

JavaScritp中的变量是没有类型的,只有值才有。变量可以随时持有任何类型的值
语言引擎不要求变量总是持有与其初始值同类型的值。一个变量可以先被赋值为字符串后重新赋值为数字,不会报错。

3、undefined和undeclared

变量在未持有值的时候为undefined,此时typeof 返回 \' undefined \';
已在作用域中声明但没有赋值的变量返回值是undefined,在作用域中没声明过的变量返回值是:ReferenceError: 变量名 is not defined

 var a ;
 a;//undefined
 b;//ReferenceError : b is not defined

这里有一个要注意的点:typeof 对于未声明过和声明过未赋值的变量返回结果都是‘undefined’

4、如何在程序中检查变量是否已存在

if(typeof myTest !== \'undefined\'){
    console.log(\'myTest已经存在\')
}
if(typeof atob === \'undefined\'){
    atob = function(){}
}

还可以用‘依赖注入’设计模式,就是将依赖通过参数显示地传递到函数中:

function doSomethingCool(FeatureXyz){
    var helper = FeatureXyz || function(){}
    var val = helper();
}

5、总结:

1、JavaScript中其中内置类型:null、undefined、string、number、boolean、object、symbol
2、变量没有类型,但它们持有的值有类型,类型定义了值的行为特征
3、undefined:声明过未赋值变量;undeclared:没声明过

以上是关于JavaScript中七种数据类型·中·一的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 七种数据类型

Spring事务传播行为详解

javascript 的七种基本数据类型

JavaScript的七种数据类型

事务总结

Spring中事务传播行为