深入浅出JavaScript(一)

时间:2022-04-25 22:51:04

数据类型

1. 六种数据类型

JavaScript包含六种数据类型:基本类型number、string、boolean、null、undefined和对象类型Object。其中,对象类型包含方法function、数组array和日期Date等。

2. 隐式转换

  • 使用+时表示连接,使用-时表示数字运算,可以巧用在number和string之间转换;
  • 类型相同比较相当于恒等===;
  • 类型不同尝试类型转换再比较,我称作为向下转型:
    • null == undefined
    • number == string,后者会自动转型为number
    • boolean会转型为number
    • object会转型为number或者string

3. 包装对象

当一个基本类型当对象使用时,只是产生了一个临时对象,将基本类型包装为一个对象,它是没有对象的属性的,使用完一次对象即销毁。

4. 类型检测

  • typeof检测:
    • typeof null; //"object"
    • 适合基本类型及function检测,null检测为object
  • instanceof检测:
    • [1,2] instanceof Array; //true
    • 适合自定义对象和原生对象,在不同iframe和Window间检测失效
  • Object.prototype.toString检测:
    • Object.prototype.toString.apply(123); //"[object Number]"
    • 适合基本类型和内置对象,null检测为null,undefined检测为undefined

表达式和运算符

  • 常量、变量、关键字叫原始表达式。
    • 原始表达式使用运算符连接叫做复杂表达式;
    • 数组表达式可以表示数组的初始化,花括号表达式可以表示初始化对象;
    • 函数表达式
    • 属性访问表达式,如Object o = new Object();o = {x:1};o.x; //1
    • 对象创建表达式
    • 调用表达式
  • 运算符分为一元、二元、三元运算符。
    • 其他常用
    • 逗号运算符
    • delete运算符
    • this
    • in

语句

  • JavaScript没有块级作用域(block使用{})
  • 函数内有函数作用域,函数内var a= b= 1;,b是全局变量,a是局部变量
  • try-catch语句抛异常的顺序问题:❤️:从内到外
  • 函数和函数表达式
  • for--in遍历是不按顺序的
  • with遍历,用于深层次遍历,但是不推荐了