需要注意的基本语法
字符串
可以使用下标获取字符串指定位置的字符,字符串是不可变的,使用索引修改字符串指的位置字符不会报错,也不会有任何效果
switch
switch (sport) {
case "basketball":
console.log("Tall Man");
case "football":
console.log("Fast Man");
default:
console.log("Not Either");
}
case语句在进行匹配是使用的是===匹配;- 如果
case语句没有匹配,则会执行default语句中的内容; case语句内的break不能少,否则语句会在匹配后执行之后所有case和default语句中的内容;
IIFE 立即调用函数表达式
形成独立作用域,避免污染全局变量
(function () {
var a = 123;
})();
eval 命令
eval()命令可以把字符串当作语句执行;eval()没有自己的作用域,执行作用域为当前作用域
var a = 1;
eval("a=2");
console.log(a); // 2
eval()不会得到 JavaScript 引擎优化,运行速度较慢,eval()间接调用作用域为全局作用域
var a = 1;
function f() {
var a = 2;
var e = eval;
e("console.log(a)");
}
f(); // 1
void 运算符
void运算符会执行给定的语句,然后直接返回undefined,void 0 === undefined; // true
<a href="javascript:void(0);">
这个链接点击之后不会做任何事情,如果去掉 void(),点击之后整个页面会被替换成一个字符 0。
</a>
<a href="javascript:void(document.body.style.backgroundColor='green');">
点击这个链接会让页面背景变成绿色。
</a>
<a href="javascript:void(document.form.submit())">点击提交表单,页面不会跳转</a>
严格模式
- 变量相关
- 不允许创建意外全局变量,即不通过
var等关键字声明的变量 - 不允许变量重复定义
- 不允许创建意外全局变量,即不通过
- 对象属性相关
- 不允许给不可赋值属性赋值,非严格模式下会默默失败
- 不允许删除不可删除属性
- 函数相关
- 函数
this默认绑定:严格模式下指向undefined,非严格模式下指向全局对象
- 函数