版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Uncle_nly/article/details/78634960
ECMAScript语法基础
弱类型语言
- a)语法约束不是很严格:变量定义、参数定义、方法调用等等
类型的定义
- a)声明统一用var进行声明(弱类型表现),不需要具体到指定类型不声明
- b)赋值的时候才确定指定类型是什么
- c)类型分两大类:
i.基本类型:number、string、boolean、undefine、function(Function)
ii.对象类型:一些对象定义,比如:Array、Date、Object(Number、String、Boolean、Function、window、document、Math、null)、等
转换类型
- a)数字字符串变量进行算术运算时隐式类型转换为number
i."11"-1+2 结果为12,过程:(1)"11"字符串转换为number,进行-减数运算,值为10 (类型:number)
ii."11"+2-1 结果为111,过程:
(2)10 和 2 进行加数运算,最终结果为12 (类型:number)(1)"11"字符串和数字2 作字符串连接,值为"112"(类型:string)
(2)"112"字符串转换为number,进行-减数运算,最终结果为111 (类型:number) - b)部分变量进行逻辑运算时隐式类型转换为boolean
i.转为false来进行识别:(1)0 、-0、 null 、 undefine 、空字符串、!1
ii.转为true来进行识别:(1)非0数字、非空字符串、!0
- c)转换为数字
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)
检验类型
- a)检验是否是非数字值,isNaN函数
i.语法isNaN(obj)
ii.返回的是一个布尔值(1)isNaN(NaN) 返回值为true
iii.校验内容:可以是字符串也可以是number
- b)检验类型,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" - c)检验对象和函数,instanceof函数
i.语法obj instanceof Object
ii.返回的是一个布尔值(1)obj instanceof Array 可以判断变量是否为数组
iii.校验内容:不能用来判断字符串和数字
(2)obj instanceof Function 可以判断变量是否为函数
(3)obj instanceof Date 可以判断变量是否为日期 - d)检验空数组
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 - d)检验对象是否为空
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 - d)拓展constructor