javascript学习----基础常识
1.javascript函数直接量声明
//函数直接声明的语法是:
function functionName(){
//...
}
function functionName(){
//...
}
在FF,谷歌,safari,opera中存在一项限制:表达式中具名函数只识别为匿名函数而忽略它的函数名。如:
//使用一对括号来强制表达式运算
(function foo(){
//...
})
//在(SpiderMonkey中)上面声明的函数不是具名的,所以下一行代码导致异常
alert(foo);
(function foo(){
//...
})
//在(SpiderMonkey中)上面声明的函数不是具名的,所以下一行代码导致异常
alert(foo);
2.javascript逻辑运算
运算符“||”与“&&”既不改变运算元的数据类型,也不强制运算结果的数据类型;运算符会将运算元理解为布尔值,以进行布尔运算;运算过程是支持布尔短路
var str="hello";
var obj={};
x1=str||obj;//x1=hello
x2=str&&obj;//x2=obj
var obj={};
x1=str||obj;//x1=hello
x2=str&&obj;//x2=obj
3.javascript赋值运算
赋值运算对于值运算来讲是复制数据,对于引用运算来讲是复制引用地址。
不过对于字符串的赋值来讲是个特例,字符串的赋值是复制的地址即字符串的地址引用。对于字符串的处理有三条限制:
- 不能直接修改字符串中的字符;
- 字符串连接运算必然导致写复制,这将产生新的字符串;
- 不能改变字符串的长短。例如修改字符串的length是没有意义的。
4.javascript中运算符的优先级
1 . [] () 字段访问、数组下标、函数调用以及表达式分组
2 ++ -- - ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值
3 * / % 乘法、除法、取模
4 + - + 加法、减法、字符串连接
5 << >> >>> 移位
6 < <= > >= instanceof 小于、小于等于、大于、大于等于、instanceof
7 == != === !== 等于、不等于、严格相等、非严格相等
8 & 按位与
9 ^ 按位异或
10 | 按位或
11 && 逻辑与
12 || 逻辑或
13 ?: 条件
14 = oP= 赋值、运算赋值
15 , 多重求值
2 ++ -- - ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值
3 * / % 乘法、除法、取模
4 + - + 加法、减法、字符串连接
5 << >> >>> 移位
6 < <= > >= instanceof 小于、小于等于、大于、大于等于、instanceof
7 == != === !== 等于、不等于、严格相等、非严格相等
8 & 按位与
9 ^ 按位异或
10 | 按位或
11 && 逻辑与
12 || 逻辑或
13 ?: 条件
14 = oP= 赋值、运算赋值
15 , 多重求值
5.javascript中的语句
声明语句
变量声明语句:
1 var variable1[=v1][,variable2[=v2],...];
标签声明语句:
1 labelname:statements;
函数声明语句:
1 function functionName(){
2 //...
3 }
2 //...
3 }
表达式语句
变量赋值语句:
1 variable=value;
函数调用语句:
1 foo();
属性赋值语句:
1 obj.property=value;
方法调用语句:
1 obj.method();
分支语句
条件分支语句:
1 if(condition){
2 statement1;
3 }[else{
4 statement2;
5 }]
2 statement1;
3 }[else{
4 statement2;
5 }]
多重分支语句:
1 switch(expression){
2 case label:
3 statementlist
4 case label:
5 statementlist
6 ...
7 default:
8 statementlist
9 };
2 case label:
3 statementlist
4 case label:
5 statementlist
6 ...
7 default:
8 statementlist
9 };
循环语句
for:
1 for([var] init;test;increment)
2 statements;
2 statements;
for .. in:
1 for([var] variable in <object|array>)
2 statements;
2 statements;
while:
1 while(expression)
2 statements;
2 statements;
do .. while:
1 do
2 statement
3 while(expression);
2 statement
3 while(expression);
控制语句
继续执行子句:
1 continue [label];
中断执行子句:
1 break [label];
函数返回子句:
1 return [expression];
异常触发语句:
1 throw exception;
异常捕获与处理
1 try{
2 tryStatements
3 }catch(exception){
4 catchStatements
5 }
6 finally{
7 finallyStatements
8 };
2 tryStatements
3 }catch(exception){
4 catchStatements
5 }
6 finally{
7 finallyStatements
8 };
其他语句
空语句
1 ;
with语句
1 with(object)
2 statements;
2 statements;