gpt4 book ai didi

javascript - 需要对此代码的一些 JavaScript 解释

转载 作者:行者123 更新时间:2023-12-02 06:43:41 25 4
gpt4 key购买 nike

我知道这样写代码是不好的做法:

var createBox = function(width, height, margin){
alert("Margin is set to " + margin);
//margin is undefined in this context or why?
var margin = margin || 2;
alert("Margin is now " + margin);
}
createBox(0,0,0);

但是有人可以解释一下,为什么边距总是设置为 2?

是不是因为在函数内部初始化同名变量的直接上下文中未定义?

编辑:对不起,我把问题弄错了......

请给个小提示:)问候,汤姆

最佳答案

||如果第一个操作数为真,则 JavaScript 中的运算符返回第一个操作数的值。否则它返回第二个操作数的值。它不返回 1/0 , 或 true/false ,与其他一些语言一样。

因此当margin参数包含一个假值,例如 0undefined ,它将返回 2 ,因为它们在 JavaScript 中都是假值。

JavaScript 中的虚假值是:一个空字符串 "" , null值,值为 0 , NaN value, bool 值false , 还有 undefined .

您描述的是 JavaScript 中非常常见的习语。事实上 ||运算符有时称为默认运算符1。当变量为 undefined 时,您可以使用它为变量分配默认值。 .这种情况下的问题是自0是有效参数,默认运算符 未按要求运行。您可能想改为执行以下操作:

margin = typeof margin === 'undefined' ? 2 : margin;

1 Douglas Crockford: The Elements of JavaScript Style - Part 2 - Idioms.

关于javascript - 需要对此代码的一些 JavaScript 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4008075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com