1. switch语句
与case值比较时,不进行类型转换。
_case(10); // 数字
_case('10'); // 非数字
function _case(d) {
switch (n) {
case 10 :
console.log('数字');
break;
default :
console.log('非数字');
break;
}
}
2. break & continue
break: 跳出循环体
continue: 跳出当前(本次)循环 (一个迭代)
3. debugger关键字
debugger 关键字用于停止执行 JavaScript,并调用调试函数。
// 在浏览器内,按F12,进入调试模式,并复制下面代码到控制台(console),观察调试
var a = 15;
debugger;
console.log(a);
4. 变量提升
在javascript中,所有变量的声明,都将被提升到函数的顶部。(初始化的不会)
x = 5;
console.log(x); // 5
var x;
console.log(y); // undefined
var y = 5;
xx(); // 'true'
function xx() {
console.log('true');
}
yy(); // TypeError: yy is not a function
var yy = function () {
console.log('true');
}
5. void
void是javascript中的一个关键字,该关键字计算一个表达式,但不返回值。
该关键字通常用在a标签上,让a标签拥有链接的样式,但不跳转。
href=“#”与 href = “JavaScript:void(0);”的区别:
在页面中跳转到页面顶部,用href="#";
跳转到指定元素位置,一般用href="#+id";
仅定义一个死链接,用href="javascript:void(0);"。
6. 严格模式(use strict)
为什么使用严格模式?
-
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
-
消除代码运行的一些不安全之处,保证代码运行的安全;
-
提高编译器效率,增加运行速度;
-
为未来新版本的Javascript做好铺垫。
严格模式的限制:
-
1.不予许使用未声明的变量。
-
2.不允许删除变量或对象。
-
3.不予许删除函数。
-
4.不允许函数内变量重名。
-
5.不允许使用八进制。
-
6.不允许使用转义字符。
-
7.不允许对只读属性赋值。
-
8.不允许对一个使用getter读取的属性进行赋值。
-
9.不允许删除一个不允许删除的属性。
-
10.变量不允许使用eval、arguments。
-
11.在作用域eval内创建的变量不能被调用。
-
12.不允许使用with语句。
-
13.禁止this关键字指向全局对象。
-
14.以下保留关键字,不能用作变量名。implements、interface、let、package、private、protected、public、static、yield。
-
"use strict";
x = 1; // 报错:1
"use strict";
var x = 1;
delete x; // 报错:2
"use strict";
function x() {}
delete x; // 报错:3
"use strict";
function x(a, a){}// 报错:4
"use strict";
var x = 010; // 报错:5
"use strict";
var x = \010; // 报错:6
"use strict";
var x = {};
Object.defineProperty(obj, "a", {value:1, writable:false});
x.a = 2; // 报错:7
"use strict";
var x = {get a() {return 1} };
x.a = 2; // 报错:8
"use strict";
delete Object.prototype; // 报错:9
"use strict";
var eval = 1; // 报错:10 14
"use strict";
eval ("var x = 1");
alert (x); // 报错:11
"use strict";
with (Math){x = cos(1)}; // 报错:12
// 13
function f(){
return this; // window
}
function f(){
"use strict";
return this; // undefined
}