语法:
-
区分大小写
-
标识符
-
字母、下划线或$开头
-
其他字符可以是字母、数字、下划线或$
-
注释:
-
单行 //
-
块 /* .... */
-
严格模式:”use strict”,解决ECMAScript3中不确定的行为、对不安全操作抛出错误
-
语句:结尾分号表示语句结束,不添加时解析器自动确定语句结尾
关键字和保留字
控制语句或一些特定操作 break、 if、else、this、try…
字符类型 abstract、enum、int、short、final…
变量
Var 松散型,可保存任意类型数据,换句话说,每个变量仅仅是一个占位符,会保存一个undefined
多个变量声明可用逗号分隔
数据类型 —— 使用typeof判断
Undefined、Null、Boolean、Number、String、Object
不要显式的声明变量值为undefined
如果需要保存的变量是对象object,可声明对象为null
操作符
-
一元操作符:只操作一个值得操作符,前置、后置++、--,应用数字字符串时,先转为数字再执行++、--
-
位操作符:ECMAScript所有值都以64位格式存储,但操作符并不直接操作64位值,而是先将64转32位整数,然后执行操作再转回64位。第32位为符号位,三步骤,1.绝对值二进制码,2.求二进制反码,3.二进制反码加1。
-
按位非~【NOT】:就是求单个数值的反码
-
按位与&【AND】:两个数值的每一位对齐,都是1结果为1,其余为0
-
按位或 |【OR】:两个数值每一位对齐,都是0结果为0,其余为1
-
按位异或^【XOR】:两个数值对齐,只有一个1时,结果为1,其余为0
-
左移 << :单个数值,向左移动的位数,例如2左移5位,2<<5 = 64
-
有符号的右移 >> :单个数值,保留符号位不动,例如64>>5 = 2
-
无符号右移 >>> :同上,符号位一起移动,将所有32位都一起移动
-
布尔操作符:
-
逻辑非 !【NOT】:单个数值取反
-
逻辑与 && :两个数值,同为真为真,其余为假
-
逻辑或 || :两个数值,同为假为假,其余为真
-
乘性操作符:
-
乘法:*
-
除法: /
-
求模:%,表示求余
-
加性操作符:
-
加法:+
-
减法:-
-
关系操作符:<、>、<=、>=
-
相等操作符:==、!=、===、!==
-
条件操作符:val = bool_expression ? true_value : false_value
-
赋值操作符:=、*=、/=、%=、+=、-=、<<=、>>=、>>>=
-
逗号操作符:一条语句执行多个操作,var a=1,b=2,c=3
语句
If:
if (condition) {
statement1 }
else {
statement2
}
do while:至少执行一次
do {
statement
} while(expression)
while
while(expression) statement
for
for(initialization; expression; post-loop-expression) statement
for-in 枚举对象的属性【index、key等】
for(property in expression) statement
label:加标签,方便后面使用
label: statement
例如,start: for(var i=0; I< count; i++) {
alert(i)
}
break、continue:控制循环代码块执行,break跳出循环,continue跳出本次循环,继续下次循环,配合for循环使用
with:将代码作用域设置到一个特定对象中,严格模式下不可使用
with (expression) statement
例如,
// 不使用with语句
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href
// 使用with语句,严格模式下不可使用
with(loaction) {
var qs = search.substring(1);
var hostName = hostname;
var url = href
}
switch: 多个if else判断情况下使用
switch (expression)
case val1: statement1
break;
case val2: statement2
break;
...
default: statement
函数
function 关键字声明
例如,function functionName(arg0, arg1, ..., argN) {
statements
}
严格模式的限制
1、不能把函数名命名为eval或arguments
2、不能把参数名命名为eval或arguments
3、不能出现两个参数同名情况
参数:
arguments,arguments对象与数组类似,可以使用方括号访问每个元素,如arguments[0],arguments[1]...
arguments.length表示有多少个参数 // (function(a,b,c){}).length 也表示有几个参数,结果为 3
没有重载
传统函数有签名【接收参数的类型和数量】,ECMAScript没有
默认后定义的函数覆盖前面