账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于let和var的一些疑惑
    18
    0

    这里最后调用func方法this指向是window,而且我window里定义了变量age,最后结果是undefined,不过我把let换成了var最终结果就是正常的20,想问问各位大神具体什么情况,求解答

    let age = 20;
    
    let obj = {
        age : 30,
        func(){
            let help = function(){
                console.log(this.age);
            };
            help();
        }
    }
    
    obj.func();
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 共 0 条
    • 在JavaScript中,let和var都是用来声明变量的。但是,它们有一些不同之处。

      1. 变量的作用域:let声明的变量在块级作用域内有效,即在整个函数或代码块内都有效。var声明的变量在函数或代码块内和全局作用域内都有效。

      2. 唯一性:var声明的变量在声明时是具有唯一性的,而let声明的变量在声明时是具有可选性的。如果一个变量已经被声明过了,那么在后续的代码中再次声明时,会覆盖之前的声明。

      3. 内存管理:var声明的变量在声明时会自动进行变量的作用域管理,即将变量分配到特定的内存区域。而let声明的变量在声明时是不需要进行任何作用域管理的,因为变量的作用域是全局的。

      4. 空值:在let中,如果声明的变量没有赋值,那么在后续的代码中会始终为undefined。而var在声明时可以赋值,但赋值后,变量的值也会立即变为undefined。

      5. 语法糖:在一些现代的JavaScript环境下,es6引入了一些新的语法糖,如let、const、let爆发等。let和const都是用来声明变量的,但是它们有一些不同之处。const声明的变量在声明时是不可变的,而let声明的变量在声明时是可变的。

      6. 最长生命周期:var声明的变量在声明时和变量的作用域决定了其最长生命周期。var声明的变量在函数或代码块内和全局作用域内都具有相同的生命周期,但var声明的变量在块级作用域内具有较短的生命周期。

      以上就是关于let和var的一些疑惑,希望对你有所帮助。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部