一.数据类型
1.基本数据类型
1.数值,包括整数和浮点数,以及特殊的NaN和infinity(整数和浮点数在底层都是通过64位浮点数存储的,所以1===1.0)
2.字符串,(HTML使用“”,JS一般用‘’区分),
可以被视为字符数组返回string【i】,
length属性是原始属性无法被改变
使用Unicode
使用btoa()和atob()转换为base64)
3.布尔值 true和false 在转换时(undefinrf,null,false,0,NaN,0,"",''转换为false,其他全为true)
2.合成类型
对象(数组,函数,以及狭义的对象)
①包括数组,函数,以及狭义的对象
② 对象包括键名和值key-value
③ 使用{},JS在和代码块混淆时解释为代码块,所以在表示对象是可以加个()
④使用.和[]读取属性
⑤delete删除属性
⑥in判断属性是否在对象里
⑦for....in循环所有属性包括继承来的
⑧with操作对象的多个属性
函数
①定义(function命令,函数表达式赋值给变量,构造函数)
②name,legth,toString()
③函数作用域(全局,函数(变量提升),块级)
④参数(可省略)传递时有值传递不影响原来的值,对象传递,修改内存,原值被修改
由同名参数时取最后的参数
arguments来进行不定数量参数,arguments[0]是第一个参数
⑤闭包,定义私有变量,通过相应的函数内的函数对外传递函数变量
⑥IIFE,函数名之后加()表示立即调用
⑦eval一般不使用
数组本质是特殊的对象
3.特殊类型
1.undefined:表示未定义
2.null:表示值为空
PS1:JS通过typedef(返回number,string,boolean,object(包括数组和null),undefined,function),instanceof(区分数组和对象),object.prototype.toString确定数据类型
Ps2:JS中有+0和-0
Ps3:NaN表示非数字
(不等于任何值包括自己NaN!==NaN,不能indexof判断
与任何数的运算都是NaN)
比如0/0,以及其他错误的数学表示
Ps4:indefinty表示无穷(1/0)pow(2.1024)运算符合无穷的定义
Ps5:parseInt()字符串转换为整数(只转换可以转换的前面的部分),parseFloat(),isNaN(),isFinite()将infinity,-inFinity,NaN,undefined返回false,其他返回true,nulll返回true