变量:
如果使用var重新声明一个已经存在的变量,是无效的。
var x = 1;
var x;
x // 1
上面代码中,变量x声明了两次,第二次声明是无效的。
但是,如果第二次声明的时候还进行了赋值,则会覆盖掉前面的值。
var x = 1;var x = 2;
// 等同于
var x = 1;var x;
x = 2;
标识符:
JavaScript 语言的标识符对大小写敏感,所以a和A是两个不同的标识符。
中文是合法的标识符,可以用作变量名。
注释方式:
// 单行注释
/* 多行注释 */
<!-- 兼容HTML 注释 -->
-->只有在行首,才会被当成单行注释,否则会当作正常的运算
If 赋值:
var x = 1;var y = 2;if (x = y) {
console.log(x);
}// "2"
结果变成了将y赋值给变量x,再判断变量x的值(等于2)的布尔值(结果为true)。
有些开发者习惯将常量写在运算符的左边,这样的话,一旦不小心将相等运算符写成赋值运算符,就会报错,因为常量不能被赋值。
if (x = 2) { // 不报错if (2 = x) { // 报错
优先采用“严格相等运算符”(===)。
Switch:
case代码块之中没有break语句,导致不会跳出switch结构,而会一直执行下去。
var x = 1;
switch (x) {
case 1:
console.log('x 等于1');
case 2:
console.log('x 等于2');
default:
console.log('x 等于其他值');
}// 输出x等于1// x等于2// x等于其他值
需要注意的是,switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。
var x = 1;
switch (x) {
case true:
console.log('x 发生类型转换');
break;
default:
console.log('x 没有发生类型转换');
}// x 没有发生类型转换
for循环:
for ( ; ; ){
console.log('Hello World');
}
省略了for语句表达式的三个部分,结果就导致了一个无限循环。
do...while循环:
do...while循环与while循环类似,唯一的区别就是先运行一次循环体,然后判断循环条件。
continue循环:
continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。
var i = 0;
while (i < 100){
i++;
if (i % 2 === 0) continue;
console.log('i 当前为:' + i);
}
上面代码只有在i为奇数时,才会输出i的值。
label标签:
JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。
label:
语句
标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。
标签通常与break语句和continue语句配合使用,跳出特定的循环。
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) break top;
console.log('i=' + i + ', j=' + j);
}
}// i=0, j=0// i=0, j=1// i=0, j=2// i=1, j=0
标签也可以用于跳出代码块。
foo: {
console.log(1);
break foo;
console.log('本行不会输出');
}console.log(2);// 1// 2