相关疑难解决方法(0)

使用"let"和"var"在JavaScript中声明变量有什么区别?

ECMAScript 6介绍了该let声明.我听说它被描述为"本地"变量,但我仍然不太确定它与var关键字的行为有何不同.

有什么区别?何时应该let使用var

javascript scope var let ecmascript-6

4199
推荐指数
28
解决办法
111万
查看次数

使用 `status == true` 时,布尔条件始终为 false

所以我刚开始学习 javascript,我现在在函数模块中,我正在玩它,突然我遇到了一个疑问:

为什么是这样:

if(x==true){
 return 1;
}
Run Code Online (Sandbox Code Playgroud)

与此不同:

if(x){
 return 1;
}
Run Code Online (Sandbox Code Playgroud)

?

你看,我有这个代码:

function isAdult(age){
    if(age >= 18){
        return true;
    }
    return false;
}

function nameAndAge(string, boolean){
    if(boolean == true){

        var my_string = string + " is adult";
        return my_string
    }
    var my_string = string + " is under age";
    return my_string

}

var talisa_age = 22;
var talisa_name = "Talisa Maegyr";

var status = isAdult(talisa_age);

var str = nameAndAge(talisa_name,status);
console.log(str)
Run Code Online (Sandbox Code Playgroud)

无论“talisa_age”值如何,我都会得到以下输出:

"Talisa Maegyr is under age"
Run Code Online (Sandbox Code Playgroud)

但是,如果我将 nameAndAge …

javascript boolean

19
推荐指数
1
解决办法
1564
查看次数

为什么不const和let语句在window对象上定义

让我们以以下代码为例:

const constVar = 'some string';
let letVar = 'some string';
var varVar = 'some string';

(function() {
  console.log(window.constVar); // prints undefined
  console.log(window.letVar); // prints undefined
  console.log(window.varVar); // prints 'some string'
})();
Run Code Online (Sandbox Code Playgroud)

根据constmdn声明的描述:

该声明创建一个常量,其范围可以在声明它的块的全局范围内或局部范围内。

let以同样的方式假设作品。

在这种情况下,“块”包含在全局范围内。我想这里的重要区别是,尽管const constVar“全局”可访问,但仍未在window对象上定义它。

这使我认为全局范围和window对象是完全不同的。最终导致2个问题。

  1. 为什么使用var关键字声明的变量定义在上,window而用const而声明的变量let却未定义在window

  2. “全局范围”和window浏览器提供给我们的对象之间有什么区别?

javascript

5
推荐指数
2
解决办法
1142
查看次数

标签 统计

javascript ×3

boolean ×1

ecmascript-6 ×1

let ×1

scope ×1

var ×1