Tips: 内容为知识梳理
目录
1.语法
- 区分大小写
全部名字都区分大小写
- 标识符
第一个字符必须是一个字母、下划线(_)或一个美元符号($);其他字符可以是字母、下划线、美元符号或数字
- 注释
//是单行注释/*是块级注释*/
- 严格模式
定义一种不同的解析和执行模型,在顶部加入
use strict使整个脚本启用严格模式,在函数体中加入use strict使局部启用严格模式
- 语句
建议以分号结尾,采用c语言风格
2.关键字和保留字
不能用于标识符,以下是所有关键字和保留字:
3.变量
- 用var定义一个变量,变量可以是任何类型,不用加以说明
- 可以省略var 使之成为全局变量,但不推荐
- 可以在一条语句定义多个变量,用逗号
,分隔其中的变量
4.数据类型
ECAMScript有六种数据类型:Undefined、Null、Boolean、Number、String、Object。
4.1 typeof操作符
用于检测给定变量的数据类型。
- undefined--值未定义
- boolean--这个值是布尔值
- string--这个值是字符串
- number--这个值是数值
- object--这个值是对象或null
- function--这个值是函数
4.2 Undefined类型
未对变量初始化时其值为undefined
4.3 Null类型
Null类型表示一个空对象指针,若变量准备用于保存对象,最好初始化为null
4.4 Boolean类型
- true和false
- 转型函数Boolean(),输入true,任何非空字符串,非零数字,任何对象,则转换为true;输入false,空字符串,0或NaN,null,undefined则转换为false
4.5 Number类型
- 八进制数第一位为0
- 十六进制第一位为0x,后面字母不区分大小写
- ECAMScript最小值:Number.MIN_VALUE=5e-324;最大值:Number.MAX_VALUE1.7976931348623157e+308。若超出这个值则转换成 Infinity 。
- 使用NaN来替代未返回数值的情况,如0除0返回NaN,而不是抛出错误,任何涉及NaN的操作都返回NaN
- Number(),parseInt(),parseFloat()用于数值转换,
- Number()规则如下
- true,false返回1和0
- null返回0
- undefined返回NaN
- 对于字符串,数字则返回数字,十六进制则返回十进制数,空字符串返回0,有其他字符则返回NaN
- 若是对象则调用valueOf和toString方法,在按照前面规则进行
- parseInt()规则如下
- 第一个非空格字符不是数字或者负号则返回NaN
- 直到遇到非数字字符才会停止转换,小数点属于非数字字符
- 可指定第二个参数,说明要转换成多少进制
- parseFloat()规则如下
- 遇到的第一个小数点有效,其余无效
- 只解析十进制,十六进制数无效,始终忽略前导0
4.6 String类型
- 用单引号或双引号表示
- 改变字符串的值的过程是先创建一个新字符串,再填充新的值,再销毁原来字符串的值,这些步骤都发生在后台
- 除了null和undefined类型无toString方法,其余类型都有这个方法,用于转换数据类型
4.7 Object类型
var o=new Object()
用于创建自定义对象
每个对象都具有几个相同的属性和方法,在这里不细说,如toString和valueOf。
5.操作符
操作符分为算术操作符、位操作符、关系操作符和相等操作符
5.1 一元操作符
只能操作一个对象
- 递增递减操作符
与c语言中的类似,
- -num为前置递减,将操作数的值减一,即num=num-1;num++为后置递增,先执行其他语句再执行递增
- 一元加减操作符
主要用于将数变成它的相反数
5.2 位操作符
对数的内存形式进行操作,即二进制形式。 负数以二进制补码储存
~按位非
将每位数取反,实质是求其负数再减1
&按位与
有0则0,两个1才是1
|按位或
有1则1,两个0才是0
^按位异或
两个值相等则返回0,不相等则返回1
<<左移
不影响符号位
>>有符号右移
右移时补充符号位的数,即不会更改符号位 7.
>>>无符号右移 右移补0,且不区分正负数,即负数的二进制补码会被当成正数的二进制码来用。
5.3 布尔操作符
!逻辑非
将操作数转换成布尔值再求反
&&逻辑与
当两个操作数为true才返回true 若有操作数不是布尔值,则遵循以下规则:
- 若第一个值为true才会继续求第二个值,若第一个值为false则不会去求第二个值
- 若第一个操作数是对象则返回第二个操作数
- 若第二个数是对象,当第一个为true才返回第二个
- 若两个都为对象则返回第二个
- 若有操作数为null或NaN或undefined,则直接返回null或NaN或undefined
||逻辑或
当两个数为false才返回false 若有一个操作数不是布尔值,则遵循以下规则:
- 若第一个数是对象则返回第一个操作数
- 当第一个值为false才会继续求第二个值,若第一个值为true则直接返回true不会再求第二个值
- 若第一个值为false则返回第二个而操作数
- 若两个都是对象则返回第一个操作数
- 若两个操作数都是null或NaN或undefined则返回这三个数
5.4 乘性操作符
*乘法
若有非数字,则先用number函数转换成数字
/除法
与乘法类似
%求模
与乘法类似
5.5 加性运算符
+加法
若有一个数是字符串,则另一个数会被转换成字符串再与另一个字符串拼接
-减法
若有操作数是字符串、布尔值、null、undefined、对象,则先转换成数字,再进行减法运算
5.6 关系运算符
- 若比较数是数值则进行数值比较
- 若比较数都是字符串,则比较两个数对应的字符编码值
- 若其中一个是数值,则将另一个转换成数值再比较
- 若是对象,则用valueOf或toString方法再按前面规则比较
- 布尔值会转换成数值再比较
5.7 相等操作符
- 相等和不相等
用
=和!=表示,遵循以下规则 + 布尔值先转换成数值再比较 + 若其中一个是字符串另一个是数值则字符串会转换成数值 + 若其中一个是对象另一个不是,则对象调用valueOf方法再比较
- 全等和不全等
用
===和!==表示 + 不会进行类型转换
5.8 条件操作符
variable = boolean_expression ? true_value : false_value;
若boolean_expression值为true,则将true_value的值赋给variable,否则将false_value的值赋给variable
5.9 赋值操作符
=*=%=/=+=-=<<=>>=>>>=
与c语言类似
5.10 逗号操作符
var num=(5,1,4,8,0) num的值为0,逗号操作符会返回表达式最后一项
6.语句
其中的if、for、do-while、while、break、continue、switch与c语言类似
for-in语句
{statement}
for (var propName in window)
{
document.write(propName);
}
用于枚举对象的所有属性,上面例子则打印了window对象的所有属性,具体步骤是先将属性值赋值给propName,再输出propName
label语句
在代码前添加标签
with语句
用于操作一个特定对象
with(object){statement}
7.函数
用function声明,具体为:
function functionName(arg0, arg1,...,argN) { statements }
- 不必定义返回值
- 不介意传递多少参数,
- 用隐性arguments对象来访问参数数组,即参数会存于这个数组中,可以直接在函数体中使用arguments对象来使用这些参数,不必声明参数
- 不能进行重载,即不能定义两个名字相同的函数,若有,则执行后一个函数