发表于: 2019-10-20 21:07:36

0 942


小课堂前的准备



JS的数据类型

一、前言:

  JavaScript中变量似乎很简单,因为它声明变量只需要一个“var”就可以,不像其他编程语言严格区分了数据类型(int/double/char/boolean...)。这样做也是有好处的,变量可以被赋予任何类型的值,同样也可以给这个变量重新赋予不同类型的值。并不是“一定终身”。

  

  可是,JavaScript并没有避开数据类型,只是在声明时统一使用无类型(untyped)的“var”关键字而已,它的数据类型是根据所赋值的类型来确定的。

复制代码
var x = 1;        //number类型var x = 0.1;     //number类型,JS不区分整数值和浮点数值var x = "hello world"; //由双引号内文本构成字符串var x = 'javascript';   //单引号内文本同样可以构成字符串var x = true;    //true和false作为布尔值var x = null;var x = undefined;  //null和undefined很相似,是特殊的类型
复制代码

 

二、正文:

  下面对不同的数据类型进行说明

数据类型分类说明详细分类

原始类型
  • 原始值不可更改
  • 原始值的比较也是值的比较

比如:var a = 1,  b = 1;

   a == b;   //true

数字(number)
字符串(string)
布尔值(boolean)
null
undefined
对象类型
  • 对象是可变的,即值是可以修改的
  • 对象的比较并非值得比较

比如:var a = [], b = [];

     a == b;   //false,只有在引用相同时,两个只才会相等

特殊对象--数组(array)
特殊对象--函数(function)
object类型

 















1.“==”和“===”,即相等和全等

类型例子 
相等(“==”)false == 0使用相等(“==”)符号时,会自动转换符号两边的数据类型再进行比较,容易出错。
全等(“===”)false === 0使用全等符号时,不会自动转换数据类型,所有该符号也对数据类型进行了比较。

 






false == 0        //truefalse === 0    //false

 

2.null和undefined的区别

undefined表示系统级的、出乎意料的或类似错误的值的空缺;表示缺少值,此处应该有值,但没有定义。例如:var a;  a就会显示undefined

null表示程序级的、正常的或在意料之中的值的空缺; 一般多使用null。

undefinednull0
-0NaN""  //空字符串

以上这些值在布尔值转换中,会转换成false。但是这并不足以让你认为他们与false是相等的:  

复制代码
undefined == true   //falseundefined == false  //falseundefined == null    //trueundefined === null  //falsenull ==  false          //falsenull == true            //false"" == false              //true"" == true               //false0 == false               //true0 == true                //false-0 == false              //true-0 == true               //falseNaN == false           //falseNaN == true            //falseNaN == NaN            //false NaN与任何值都不相等,包括它自身
复制代码

 

3.Infinity和NaN

类型相同点例子说明
Infinity都是Number类型2/0表示无限大,超过JS的number所能够表示的最大值。
NaN0/0表示not a number,无法计算的结果。

 




//NaN是一个特殊的number,与其他所有值都不相等,包括它自身NaN === NaN        //false//唯一识别NaN的方法isNaN(NaN)         //true

 

4.JS的typeof的用法,可以把数据类型当作字符串返回

 123456
typeof的运算参数:数字字符串布尔值对象、数组和null函数运算数未定义
例子:typeof(123)typeof("123")typeof(true)typeof([])typeof(function(){})typeof(arr)
返回值:"number""string""boolean""object""function""undefined"

 







复制代码
//typeof的括号可以不用,直接在后面跟需要测试的内容var a;typeof a;        //"undefined"var cc = {a:123};typeof cc;        //"object"typeof null;        //"object"
复制代码

说明:

  • 用途:可以使用typeof来判断一个变量是否存在,如:if(typeof a != "undefined")
    而不可使用:if(a),因为如果a不存在会报错(未声明),使用typeof则可以避免这个问题。
  • 局限:对于array、null和对象,typeof一律返回object。对此可以通过instanceof来区分。

 

5.JS的instanceof,判断一个变量是否是某个对象的实例

复制代码
var a = new Array();
a instanceof Array           //truea instanceof Object          //true// 判断 foo 是否是 Foo 类的实例 , 并且是否是其父类型的实例function Aoo(){}function Foo(){}
Foo.prototype = new Aoo();//JavaScript 原型继承var foo = new Foo();
console.log(foo instanceof Foo)//trueconsole.log(foo instanceof Aoo)//true
复制代码
  • instanceof 运算符判断一个对象是否是另一个对象的实例。返回true或false
  • instanceof 运算符用来检测 constructor.prototype 是否存在于参数 obj 的原型链上(或者说:检测obj的原型链上是否存在constructor.prototype )

明天要搞好数据类型讲小课堂啊~



返回列表 返回列表
评论

    分享到