看代码说输出

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值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值