慕课网JavaScript深入浅出学习笔记之数据类型

Posted joycessh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了慕课网JavaScript深入浅出学习笔记之数据类型相关的知识,希望对你有一定的参考价值。

javascript数据类型

六种数据类型(五种原始类型,一种对象类型)

  • number
  • sttring
  • boolean
  • null
  • undefined
  • object #对象
    • Function
    • Array
    • Date
    • ...

javascript数据类型是弱数据类型,在定义变量时无需指定数据类型。

var num = 32;
num = "this is a string";

32 + 32  // 64 #加法运算
//"+"理解为字符串拼接,"-"理解为减法运算
"32" + 32 // "3232" # 字符串拼接
"32" - 32 // 0 # 减法运算

隐式转换

巧用“+”/"-"规则转换类型

var num = "string";
num - 0 //将num对象转换为number

var num = 123;
num + "" //将num对象转换为string

a === b #严格等于

  • 首先判断类型,类型不同,返回false
  • 类型相同:
  • number //数值一样
  • string //长度和内容都一样
  • null === null
  • undefined === undefined
  • NaN != NaN //NaN跟任何东西比较都不相等,包括跟自己比较。
  • new object != new object //就算是两个空对象,也不相等。
  • [1, 2] != [1, 2] //内容相同,顺序一样,也不相等,因为她们不是完全相同的对象
  • JavaScript中,对象的比较是用引用去比较的

a == b #等于

  • 类型相同,同===
  • 类型不同,尝试类型转换再比较:
  • null == undefined //true
  • number == string //尝试把string转number,1 == "1.0"为true
  • boolean == ? //boolean转number,true = 1, false = 0
  • object == number | string //尝试把对象转为基本类型 new String(‘hh‘) == ‘hi‘ //true
  • 其他:false

包装对象

var str = "string"; //string类型
var strObj = new String("string"); //对象类型,string对应的包装类
str.length //str为基本类型,没有属性。当str访问length属性时,javascript会把基本类型转换为对应的包装对象

类型检测

typeof

{%note danger%}适合检测基本类型和function,遇到null失效{%endnote%}

typeof 100    "number"
typeof true     "boolean"
typeof function   "function"
typeof(undefined)  "undefined"
typeof new Object()   "object"
typeof [1, 2]           "object"
typeof NaN           "number"
typeof null         "object" #返回object而不是null,是由于历史原因

instanceof

instanceof操作符是基于原型链去判断,用法:obj instanceof Object
注意: 不同的window或iframe之间的对象类型检测不能使用instanceof!

{%note danger%}可以用来检测自定义对象以及原生对象{%endnote%}

[1, 2] instanceof Array === true
new Object() instanceof Array ===false

Object.prototype.toString.apply()

{%note%}适合内置对象和基本类型,用来检测null会存在兼容性问题{%endnote%}

Object.prototype.toString.apply([]); === "[object Array]"
Object.prototype.toString.apply(function(){}); === "[object Function]"
Object.prototype.toString.apply(null); === "[object Null]"
Object.prototype.toString.apply(unfefined); === "[object Undefined]"

IE6/7/8 Object.prototype.toString.apply(null); 返回"[object Object]"

以上是关于慕课网JavaScript深入浅出学习笔记之数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Java基础__慕课网学习(24):深入理解抽象类与接口(转)

JavaScript进阶--慕课网学习笔记

慕课网《前端JavaScript面试技巧》学习笔记-原型和原型链

慕课网,我的yii2学习笔记(基础篇)

慕课网笔记之oracle开发利器-PL/SQL基础

AngularJs学习笔记(慕课网)