- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我之前一直在阅读有关 JavaScript 提升的内容。
JavaScript Scoping and Hoisting by Ben Cherry
Two words about “hoisting” by Dmitry Soshnikov
还有一些关于 JavaScript 类型强制、真假测试的更多信息: Truth, Equality and JavaScript和一些其他资源
在练习一些时,我发现我遗漏了一些关于提升和变量“真值和假值”的重要概念。
var foo = 1;
function bar() {
if (!foo) {
alert('inside if');
var foo = 10;
}
}
bar();
o/p: inside if
疑问:“foo”值为“1”,if(!foo)
的计算结果应为 false
,而该 block 不应为已执行(引用上述资源:提升仅影响 var
和 function
声明,但不影响执行)。但是为什么会显示该警报。如果我直接使用 false
(如以下无技巧代码所示:片段 #3),情况就不同了
var foo = 1;
function bar() {
if (!foo) {
alert('inside if');
}
}
bar();
o/p:无输出;表示控件未进入“if” block
这是人们所期待的
var foo = 1;
function bar() {
if (false) {
alert('inside if');
var foo = 10;
}
}
bar();
o/p:无输出;表示控件未进入“if” block
这是人们所期待的
有人请澄清。谢谢
最佳答案
对于您的示例 1,显示警报是因为您在函数内部使用 var
并且 var
声明被提升到函数的顶部,所以它相当于:
var foo = 1;
function bar() {
var foo;
if (!foo) {
alert('inside if');
foo = 10;
}
}
bar();
人们可能会得出结论,这些问题提供了令人信服的理由,可以在函数顶部显式声明所有变量。
关于javascript - 理解 JavaScript 提升和 truthy & falsy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6766044/
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicates: Check if Ruby object is a Boolean How can I avoid tru
我正在启动一个知识库项目,并想从下载最近的维基数据转储开始。我发现了一个名为“truthy”的数据转储,但我不确定是否可以信任它。 我对流行文化的理解是,“真实”的陈述是不真实的陈述,并且 based
我正在启动一个知识库项目,并想从下载最近的维基数据转储开始。我发现了一个名为“truthy”的数据转储,但我不确定是否可以信任它。 我对流行文化的理解是,“真实”的陈述是不真实的陈述,并且 based
据说 Javascript 中的非空字符串被认为是“真实的”。它解释了为什么代码: if ("0") { console.log("OK") } 打印“OK”。 但是,为什么代码: true
我有一个关于 javascript truthy/falsy 的问题 据我所知,包括负数在内的任何非零数都是真实的。但如果是这样,那为什么 -1 == true //returns false 还有
我发现了以下遗留 Javascript 代码: function doSomething(parameter) { if (parameter != null && parameter !=
给定以下数组 $mm Array ( [147] => Array ( [pts_m] => [pts_mreg] => 1
在 TypeScript 中,有没有表示真值的类型? 我有这个方法:Object.keys(lck.lockholders).length;enqueue(k: any, obj?: any): vo
使用这样的函数,返回值将始终为真值,不需要true,也不需要any。有什么方法可以定义此函数的返回值为 truthy 吗? function cleanTruthy (value: any) {
Underscore.js 有两个方法 _.isNull和_.isUndefined我们在代码中经常使用它,并且我们还为 _.isUndefinedOrNull 创建了一个混合。 。 我最近意识到我可
我有一个对象数组,其中每个对象都有一个名为 field 的属性。 field 属性的某些值是 true: const arr = [ {field: true}, {field: false}
我正在尝试通过 switch 语句确定对象属性值是否“真实”。 使用这个示例 block : var test = { foo: "bar" } switch(true) { case tes
在 JavaScript 中有真值和假值的概念。 例如 0 :总是假的 1 : 始终为真 '0':始终为真 '1':始终为真 .NET 框架上的 C# 语言中是否有等效的真值和假值列表? 我想知道这个
考虑以下代码: //the var Test has NOT been declared yet console.log((typeof Test)); // "undefined" console.
如果我想测试一个对象是否有特定的方法:以下代码可靠吗? const obj = { add(a, b) { return a + b } } if (obj.add) { co
可以使用 toString 函数覆盖 string 强制转换。 可以使用 valueOf 函数覆盖 number 强制转换。 boolean 强制转换也可以使用 valueOf 函数覆盖。 var f
在 ruby 中我们可以这样做: stuff_in_trash.detect(&:eatable?) => :pack_of_peanuts stuff_in_trash.detect(&:dri
我之前一直在阅读有关 JavaScript 提升的内容。 JavaScript Scoping and Hoisting by Ben Cherry Two words about “hoisting
我正在学习 JavaScript 基础知识。我对“真”和“假”的结果感到困惑。谁能告诉一下这是什么原因吗? myVariable = undefined ? "truthy" : "falsey";
我希望编制一份 ColdFusion 认为虚假和真实的值的完整列表。我所知道的有: //falsy values false "false" 0 "no" //truthy values true "
我是一名优秀的程序员,十分优秀!