语法
区分大小写
第一个概念就是 ECMAScript
中的一切(变量、函数名和操作符)都区分大小写。
变量名 test 和变量名 Test 分别表示两个不同的变量。
标识符
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。
命名规则:
第一个字符必须是一个字母、下划线(_)或一个美元符号($)
其他字符可以是字母、下划线、美元符号或数字
标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写,例如:
firstSecond
myCar
doSomethingImportant
不能把关键字、保留字、 true
、 false
和 null
用作标识符
注释
单行注释
// 单行注释
块级注释
/*
* 这是一个多行
* (块级)注释
*/
虽然上面注释中的第二和第三行都以一个星号开头,但这不是必需的。之所以添加那两个星号,纯粹是为了提高注释的可读性.
严格模式
ECMAScript 5 引入了严格模式(strict mode)
的概念。严格模式是为 JavaScript定义了一种不同的解析与执行模型。在严格模式下, ECMAScript 3 中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。要在整个脚本中启用严格模式,可以在顶部添加如下代码:
"use strict";
语句
ECMAScript 中的语句以一个分号结尾,如果省略分号,则由解析器确定语句的结尾。。。建议不要省略分号 加上分号可以避免代码在压缩的时候出错,同时解析速度会更快。。。
{} 代码块
if (test)
alert(test); // 有效但容易出错,不要使用
if (test){ // 推荐使用
alert(test);
}
在控制语句中使用代码块可以让编码意图更加清晰,而且也能降低修改代码时出错的几率。
关键字和保留字
特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等
关键字也是语言保留的,不能用作标识符。
break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger function this with
default if throw
delete in try
当然还有一部分保留字,没有列举出来。。。
变量
ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。每个变量仅仅是一个用于保存值的占位符而已。定义变量时要使用 var
操作符。
var message; //这行代码定义了一个名为message的变量,该变量可以用来保存任何值。
message = "string"; //这时message是字符串类型
message = 123; // 这时message是数字类型
message = [1,2,3]; // 这时message是数组类型
用 var
操作符定义的变量将成为定义该变量的作用域中的局部变量。如果在函数中使用 var
定义一个变量,那么这个变量在函数退出后就会被销毁
function test(){
var message = "hi"; // 局部变量
}
test();
alert(message); // 错误!message 变量的作用域仅仅在test这个函数内有效。。。
function test(){
message = "hi"; // 全局变量
}
test();
alert(message); // "hi" 这里的message 没有使用var来修饰,那么message就是全局变量。。。只要调用过一次 test()函数,这个变量就有了定义,就可以在函数外部的任何地方被访问到。
虽然省略 var
操作符可以定义全局变量,但这也不是我们推荐的做法。因为在局部作用域中定义的全局变量很难维护,而且如果有意地忽略了 var
操作符,也会由于相应变量不会马上就有定义而导致不必要的混乱。