functionside(arr){
arr[0]= arr[2]}// 这里c有初始值,会运用到es6结构赋值,就是处于严格模式下functionfn(a,b,c =3){
c =10side(arguments)// 不会影响到abc// a: 1, b:1, c:10return a + b + c
}fn(1,1,1)// 12
情景二:
functionside(arr){
arr[0]= arr[2]}functionfn(a,b,c){
c =10side(arguments)// 会影响到abc// a: 10, b:1, c:10return a + b + c
}fn(1,1,1)
严格模式下('use strict'):arguments和实参是不会相互影响的
非严格模式下:argument和实参是会相互影响的
匿名立即执行函数
非严格模式下
var a =1(functiona(){
a =2
console.log('a', a)})()// 打印的a函数/*
a ƒ a() {
a = 2
console.log('a', a)
}
*/
var a =1undefined// 这里将函数名改成b,输出的就是2了(functionb(){
a =2
console.log(a)})()// 2
严格模式下
(functiona(){'use strict'
a =2
console.log('a', a)})()// 报错,不能将一个常量重新赋值/*
VM2461:3 Uncaught TypeError: Assignment to constant variable.
at a (<anonymous>:3:7)
at <anonymous>:5:3
a @ VM2461:3
(anonymous) @ VM2461:5
*/