var a=10
function b()
{
a=100
}
b()
console.log(a)//100
因为b中的a没有var 所以改变的是全局中的a
var a=10
function b()
{
a=100
return
function a(){}
}
b()
console.log(a) //10
因为function使a变量提升,所以b中改变的a的值其实为内部的a所以不影响全局的a,仍输出10
var a=10
if(true)
{
var a=100
}
console.log(a)
因为var的作用域是函数级,所以a被改变了。所以输出100
var name='win'
const obj={
name:'obj',
a:()=>{
console.log(this.name)
}
}
const obj1={
name:'obj1'
}
obj.a.call(obj1)
输出win,因为obj.a本身为箭头函数,所以他没this继承于它所处的最近层的this环境,obj1只是一个对象并没有上下文环境,所以即使call到obj1上,也是输出全局的name值。