ECMAScript语法基础
目录
弱类型语言
- 语法约束不是很严格:变量定义、参数定义、方法调用等等
类型的定义
- 声明统一用var进行声明(弱类型表现),不需要具体到指定类型不声明
- 赋值的时候才确定指定类型是什么
- 类型分两大类:
i.基本类型:number、string、boolean、undefine、function(Function)
ii.对象类型:一些对象定义,比如:Array、Date、Object(Number、String、Boolean、Function、window、document、Math、null)、等
转换类型
- 数字字符串变量进行算术运算时隐式类型转换为number
- "11"-1+2 结果为12,过程:
- "11"字符串转换为number,进行-减数运算,值为10 (类型:number)
- 10 和 2 进行加数运算,最终结果为12 (类型:number)
- "11"+2-1 结果为111,过程:
- "11"字符串和数字2 作字符串连接,值为"112"(类型:string)
- 112"字符串转换为number,进行-减数运算,最终结果为111 (类型:number)
- "11"-1+2 结果为12,过程:
- 部分变量进行逻辑运算时隐式类型转换为boolean
- 转为false来进行识别:
- 0 、-0、 null 、 undefine 、空字符串、!1
- 转为false来进行识别:
ii.转为true来进行识别:
(1)非0数字、非空字符串、!0
- 转换为数字
i.Number()方法(1)不能解析不是纯数字的字符串
ii.parseInt()方法可解析一个字符串,并返回一个整数。
(2)空字符串转换为0
(3)Boolean值中true转换为1,false转换为0
(4)不能解析时返回NaN(类型:number,但值为NaN----‘不是个数字’)(1)只有字符串中的第一个数字会被返回,其余部分截去。
iii.parseFloat()方法解析一个字符串,并返回一个浮点数
(2)空字符串不能解析转换
(3)不能解析时返回NaN(类型:number,但值为NaN----‘不是个数字’)(1)只有字符串中的第一个数字会被返回,其余部分截去。
iv.算术运算加(+)和减(-)能在以下情况下降字符串转换为数字
(2)空字符串不能解析转换
(3)不能解析时返回NaN(类型:number,但值为NaN----‘不是个数字’)(1) + "string" 转换为NaN(类型:number,但值为NaN----‘不是个数字’)
(2) + "11" 转换为11 (类型:number)
检验类型
- 检验是否是非数字值,isNaN函数
i.语法isNaN(obj)
ii.返回的是一个布尔值(1)isNaN(NaN) 返回值为true
iii.校验内容:可以是字符串也可以是number
- 检验类型,typeof函数
i.语法typeof obj
ii.返回基本类型(五种)或者object对象类型 的字符串(1)typeof NaN 返回值为"number"
iii.校验内容:不能用来判断日期和数组
(2)typeof null 返回值为"object"
(3)typeof new Array() 返回值为"object"
(4)typeof new Date() 返回值为"object"
(5)typeof function(){} 返回值为"function" - 检验对象和函数,instanceof函数
i.语法obj instanceof Object
ii.返回的是一个布尔值(1)obj instanceof Array 可以判断变量是否为数组
iii.校验内容:不能用来判断字符串和数字
(2)obj instanceof Function 可以判断变量是否为函数
(3)obj instanceof Date 可以判断变量是否为日期 - 检验空数组
i.语法(obj== false)
ii.返回的是一个布尔值(1)非空数组(obj == false)返回 false
iii.校验内容:不能用来判断undefind和空/非空对象,不能判断["0"]和 []
(2)undefind(obj == false)返回 false
(3)空对象(obj== false)返回 false
(4)非空对象(obj== false)返回 false
(5)空数组(obj == false)返回 true - 检验对象是否为空
i.语法(Object.keys(obj)== false)
ii.将对象转化为数组,再校验,返回的是一个布尔值(1)非空数组(Object.keys(obj)== false)返回 false
iii.校验内容:不能在空数组和空对象之间判断,不能判断["0"]和 []
(2)undefind(Object.keys(obj)== false)报错
(3)空对象(Object.keys(obj)== false)返回 true
(4)非空对象(Object.keys(obj)== false)返回 false
(5)空数组(Object.keys(obj)== false)返回 true - 拓展constructor