javascript中的变量范围是什么?它们的内部是否与函数外部相同?或者甚至重要吗?另外,如果变量是全局定义的,那么它们存储在哪里?
我最近在javascript中遇到了const关键字.据我所知,它用于创建不可变变量,我已经测试过以确保它不能重新定义(在node.js中):
const x = 'const';
const x = 'not-const';
// Will give an error: 'constant 'x' has already been defined'
Run Code Online (Sandbox Code Playgroud)
我意识到它还没有在所有浏览器中标准化 - 但我只对node.js/v8的上下文感兴趣,并且我注意到当使用var关键字时,某些开发人员/项目似乎非常喜欢它达到同样的效果.
问题?
何时使用const代替var?
是否应该在每次声明不会重新分配的变量时使用它?
如果使用var代替const,反之亦然,它实际上是否有任何区别?
JavaScript中的值是什么'falsey',这意味着它们在表达式中评估为false if(value),value ?并且!value?
关于Stack Overflow上的falsey值的目的已有一些讨论,但没有详尽的完整答案列出所有的falsey值.
我在MDN JavaScript Reference上找不到任何完整列表,我很惊讶地发现在JavaScript中查找完整,权威的虚假值列表时的最佳结果是博客文章,其中一些有明显的遗漏(例如,NaN),并且没有一个像Stack Overflow这样的格式,可以添加评论或替代答案来指出怪癖,惊喜,遗漏,错误或警告.因此,制作一个似乎是有意义的.
我想做一些非常简单的事 - 在Javascript中初始化一个数组.它不适用于谷歌浏览器.这是代码:
status = [];
for(i=0; i < 8; i++)
status[i]=false;
alert(status.length); //It says 0 when it should say 8
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
<!DOCTYPE html>
<html>
<body>
<p id="demo1"></p>
<p id="demo2"></p>
<script>
var status = [true,false,true,false,true,false,true,false,true,false];
var status1 = [true,false,true,false,true,false,true,false,true,false];
document.getElementById("demo1").innerHTML = status[2];
document.getElementById("demo2").innerHTML = status1[2];
</script>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/vdr2r38r/
为什么不同名称的相同变量的行为不同?
为什么当我返回时,我认为是来自javascript函数的布尔变量,它在调用函数中被检测为字符串,但如果我返回一个布尔文字,则调用函数将其检测为布尔值?
所以,例如:
$( document ).ready(function(){
$('#result').text(typeof validate());
$('#result2').text(typeof validate2());
});
function validate(){
status = true;
status = false;
return status;
}
function validate2(){
return true;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Hello</p>
<div id="result"></div>
<div id="result2"></div>Run Code Online (Sandbox Code Playgroud)
javascript ×6
arrays ×1
const ×1
function ×1
immutability ×1
node.js ×1
scope ×1
var ×1
variables ×1