大小写
变量、函数名、操作符区分大小写
标识符
变量、函数、属性名、函数参数,第一个字符必须是字符、下划线 ( _ ) , 或美元符($)
其它字符可以是字母,下划线,美元符或数字
注释
// 单行注释
/*
* 多行注释
*
*/
严格模式
ECMAScript 5 引入严格模式概念,为 JavaScript 定义了一种不同的解析与执行模型
严格模式下,ECMAScript 3 中的一些不确定行为得到处理,而且对某些不安全的操作也会抛出错误。
在整个脚本中启用严格模式,在顶部添加
"use stricr"
也可以指定函数在严格模式下执行
function doSomething() {
"use stricr";
// 函数体
}
语句
不强制使用分号作为语句结尾,但不推荐省略封号
var sum = a + b // 没有分页也是有效语句,不推荐
var diff = a - b; // 有效语句,推荐
推荐使用{}
大括号将多个语句组合到一个代码块中
if (test)
alert(test); // 有效但容易出错,不要使用
if (test) { // 推荐使用
alert(test);
}
关键字和保留字
参考 ECMA-262
变量
ECMAScript 变量支持松散绑定
定义变量使用var
操作符,例如
var message;
var sum = 10;
var str = "hi";
注意:var
操作符定义的变量将成为定义该变量的作用域中的局部变量
function test() {
var message = "hi"
}
test();
console.log(message); // 错误
虽然省略var
操作符可以定义全局变量,但是不推荐这样的做法,因为难以维护,造成代码混乱
function test() {
message = "hi"
}
test();
console.log(message); // "hi"
可以使用一条语句定义多个变量
var message = "hi",
str = "hello",
age = 29;
数据类型
5 种简单数据类型(基本数据类型)
- Undefined
- Null
- Boolean
- Number
- String
1 种复杂数据类型
- Object
typeof
操作符
对一个值使用typeof
操作符可能返回下列某个字符串
Undefined
如果这个值未定义boolean
如果这个值是布尔值string
如果这个值是字符串number
-如果这个值是数值object
如果这个值是对象或nullfunction
-如果这个值是函数
var message = "some string";
console.log(typeof message); // string
console.log(typeof (message)); // string
console.log(typeof 95); // number
function f() {
// do something
}
console.log(typeof f); // function
var result = true;
console.log(typeof result); // boolean
var value;
console.log(typeof value); // undefined
注意: typeof
是一个操作符,不是函数,以上代码种的括号可以使用,但不是必须的
Undefined 类型
Undefined 类型只有一个undefined
特殊的值,在使用var
声明变量但未对其加以初始化的时候,这个变量的是就是undefined
var message;
console.log(message == undefined); // true
var message = undefined; // 没有必要显式地将一个变量的值设置为undefined
console.log(message == undefined); // true
Null 类型
Null 类型只有一个null
特殊的值,null值代表一个空对象指针
var car = null;
console.log(typeof car); // "object"
尽管以下代码输出 true
console.log(null == undefined); // true
没有必要显式地将一个变量的值设置为undefined,但这条规则对于null不适用,只要意在保存的对象的变量还没有真正的保存对象,就应该明确地让该变量保存null值,
Number 类型
Number 类型表示整数和浮点数
可表示十进制、八进制、十六进制的数字
八进制字面值第一位必须是0,然后是八进制数字序列0~7。如果字面值种的数值超出范围,那么前面的0被忽略,后面的数值作为十进制数值解析。八进制数在严格模式下无效,并会抛出错误
var num = 070; // 八进制的56
var n = 079; // 无效的八进制数字,解析为79
十六进制字面值的前两位必须是0x,后面跟任何十六进制数字(09,以及AF),A~F不区分大小写
var a = 0xa; // 十六进制的10
var b = 0x1F; // 十六进制的31
String类型
string类型用于表示零个或多个16位Unicode字符组成的字符序列,即字符串.可以由双引号(")或者单引号(')表示
var str = "Hello, Wrold!";
var str = '你好, 世界!';
特点是字符串长度不可变
转换为字符串,使用 toString()
方法
var a = 11;
var str = a.toString();
console.log(a + 1) // 12
console.log(str + 1); // 111
可以使用toString()
方法进行进制转换
var num = 10;
console.log(num.toString()); //10
console.log(num.toString(2)); //1010
console.log(num.toString(8)); //12
console.log(num.toString(10)); //10
console.log(num.toString(16)); //a
Object类型
一组数据和功能的集合
var o = new Object();
var a = new Object; // 有效,但不建议省略圆括号
每一个Object实例都有下列属性和方法
-
constructor
保存着用于创建当前对象的函数 -
hasOwnProperty(propertyName)
用于检查给定的属性在当前对实例种是否存在 -
isPropertyOf(propertyName)
用于检查传入的对象是否是当前对象的原型 -
propertyIsEnumerablr(propertyName)
用于检查给定的属性是否能够使用for-in语句来枚举 -
toLocaleString()
返回对象的字符串表示,该字符串与执行环境的地区对应 -
toString()
返回对象的字符串表示 -
valueOf()
返回对象的字符串