严格模式(ES5新增语法)
由于js的作用域和隐式声明变量等语法会造成很多预想不到的错误,所以ES5中新增了一个严格模式的语法,用于严格规范代码的书写。
使用语法:
"use strict";
使用说明:
1、要放在代码的最前面,也就是在script标签中的第一行或者某个函数中的第一行,否则会失效
2、严格模式可以规范当前script标签或者当前函数中的代码,不能规范别的script标签中的代码和别的函数
规范的语法:
1、不允许隐式声明变量(不允许省略var定义变量)
//严格模式
// 'use strict'
// a=10
// console.log(a)
//输出:a is not defined
//输出翻译:a没有定义
//普通模式
// a=10
// console.log(a)
//输出:10
2、 禁止函数中的形参重名
// 严格模式// 严格模式
// 'use strict'
// function fn(a,a){
// console.log(a);
// }
// fn(1,2)
//输出:Duplicate parameter name not allowed in this context
//输出翻译:此上下文中不允许重复参数名
//普通模式
// function fn(a,a){
// console.log(a);
// }
// fn(1,2)
//输出:2
3、 禁止函数中的this代表window(普通函数中的this本身是代表window的)
/ 严格模式
// 'use strict'
// function fn(){
// console.log(this);
// }
// fn()
//输出:undefined
// 普通模式
// function fn(){
// console.log(this);
// }
// fn()
//输出:window
为什么要使用严格模式?
1、 可以让代码更加规范
2、 可以让代码运行起来更快,提高运行效率
注意:当合并文件时,第一行的严格模式代码回失效,建议包在一个自执行函数中