需要注意的基本语法

字符串

可以使用下标获取字符串指定位置的字符,字符串是不可变的,使用索引修改字符串指的位置字符不会报错,也不会有任何效果

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不能少,否则语句会在匹配后执行之后所有casedefault语句中的内容;

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运算符会执行给定的语句,然后直接返回undefinedvoid 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,非严格模式下指向全局对象

results matching ""

    No results matching ""