javascript变量
1.命名
命名方法:驼峰命名法
小驼峰:第一个单词首字母小写,其他首字母大写
大驼峰:每个单词首字母大写
命名规则
英文字母或者下划线为首字符
英文字母、数字、下划线组成
避免javascript关键字与保留字
2.声明
var 变量名
避免重复声明,隐式声明,不声明直接赋值
应该先声明,后读写;先赋值,后运算
3.变量类型
值类型
占用空间固定,保存在栈中
保存和复制的是值本身
使用typeof检测数据的类型
基本类型数据是值类型
4.引用类型
占用空间不固定,保存在堆中
保存与复制的是指向对象中的一个指针
使用instanceof检测数据的类型
使用new( )方法构造出的对象是引用型
5.作用域
全局变量
在函数体外定义的变量
在函数体内部定义的无var的变量
任意位置调用
全局变量是全局对象的属性
生命周期:除非被显式删除,否则一直存在
局部变量
在函数内部使用var声明的变量
函数的参数变量
在当前函数体内部调用
局部变量是调用对象的属性
生命周期:自声明起函数运行完毕或被显式删除
优先级
局部变量高于同名参数变量和同名全局变量
参数变量高于同名全局变量
回收机制
标记清除
引用计数
javascript运算符
1.算术运算符
+
数字代数求和
字符串连接操作(字符串+字符串:两者直接拼接;字符串+数值:数值转为字符串再拼接)
将一个数值转换成字符串:数值+空字符串
-
对操作数进行“取反”操作
对数字进行减法操作
将字符串转换成数值:数值型字符串-0
*:乘法运算
/:除法运算
%:取模:余数
复合赋值运算符:+=、-=、*=、/=、%=
2.自增与自减
++:自加1;–:自减1
运算数必须是一个变量、数组的一个元素或者是对象的属性,如果运算数是非数值的则运算符会将它转成数值
符号在运算数之前:先进行递增(递减)操作,再进行求值
符号在运算符之后:先求值,再进行递增(递减操作)
3.关系运算符
大小关系比较
运算符:< > <= >=
规则:
数值与数值比较:比较代数值
仅一个运算数是数值:将另一个运算数转换成数值,并比较代数值
字符串比较:逐字符比较它们的Unicode数值
字符串与非数值的比较:将运算数转换成字符串并进行比较
运算数非数值也非字符串:转换为数值或字符串后进行比较
运算数无法被转换成数值或字符串:返回值为false
与NaN的比较:返回值为false
等值关系比较
相等比较
== , !=
规则:
null与undefined比较:相等且比较前不进行任何转换
NaN:与任何数值都不相等包括自身
对象:是否属于同一个对象
相同比较
=== , !==
规则:
值类型间比较:只有数据类型相同且数值相等时才能够相同
值类型与引用类型比较:不相同
引用类型间比较:比较引用值(内存地址)
4.对象运算符
in:判断左侧运算数是否为右侧运算数的成员
instanceof:判断对象实例是否属于某个类或构造函数
new:根据构造函数创建一个新的对象,并初始化该对象
delete:删除指定对象的属性,数组元素或变量
.及[]:存取对象和数组元素
{}:函数调用,改变运算符优先级等
5.逻辑运算符
待续
参考:
js思维导图:https://segmentfault.com/a/1190000011151972#articleHeader2
《js高级程序设计(第三版)》