Javascript词法结构
1. 区分大小写,大小写敏感
2. ;号是可选的,Javascript会自动加上;。但是作为好的编程习惯。最好都加上;
3. Javascript不区分整形数值和浮点型数值,所有的数值都是用浮点型表示
4. Javascript是无类型的。可以存放任何类型的值
5. 由var声明的变量是永久性的,也就是说用delete运算符来删除这些变量会引发错误
6. 如果尝试读一个未声明的变量值,Javascript会产生一个错误
7. 如果尝试给一个未用var声明的变量赋值,Javascript会隐式声明该变量
8. 隐式声明的变量总是会被创建为全局变量
9. Javascript函数定义是可以嵌套的,每个函数都有自己的局部作用域
10. Javascript没有块级作用域函数中声明的变量做整个函数中都有定义
var scope = "global"; function f() { alert(scope); // [color=green]显示“undefined”而不是“global”[/color] var scope = "local"; // 变量做此处定义,但是到处都有定义 alert(scope); // 显示“local” } //等价于下面: var scope = "global"; function f() { var scope; alert(scope); scope = "local"; alert(scope); // 显示“local” }
所以最好将所有变量声明集中放置做函数的开头
11. 运算符 typeof void >> << >>> instanceof in
== === != !== ^ & 等
12. 字符串运算符
1 + 2 结果: 3 "1" + 2 结果: "12" "1" + "2" 结果: "12" 11 < 3 结果: false "11" < "3" 结果: true "11" < 3 结果: false "one" < 3 结果: false 1 + 2 + "hello" 结果: 3hello "hello" + 1 + 2 结果 hello12
13. 语句
for(variable in object)
{
statement;
}
14. 函数定义
(1) function f(x,y) { return ; } (2) var f = new Function("x","y","return ;"); (3) var f = function(x,y) { return; }
15. 作为数据的函数
Javascript中,函数并不只是一种语法,还可以是数据,这意味着能够把函数赋给变量,存储在对象的属性中或存储做数组中,传递给函数等
(1)
function square(x) {return x * x;} var b = square; var c = b(5); //等价于 var c = square(5);
16. 函数的实际参数 Arguments 对象 可以看做数组
function f(x,y,z) { // 判断传递机进来的参数是否是三个 if(arguments.length == 3) { } }
17. callee 引用当前正在执行的函数
function(x) { if(x <= 1) { return 1; } return x * arguments.callee(x - 1); }
以上内容都是来源于《JavaScript 权威指南》