相关疑难解决方法(0)

JavaScript类型转换:(true && 1)vs(true | | 1)

例如,JavaScript是非严格类型的语言,如Java.

我们知道,它根据上下文转换结果的值:

"2" + "3" 结果 "23"

"2" * "3" 结果 6

这很清楚,可以理解.

我只是尝试了以下表达式并感到困惑:

true && 1结果1
true || 1结果true

为什么第一个给出Number而第二个给出布尔值?

考虑到JavaScript转换规则,boolean由于boolean表达式的上下文,我希望在这两种情况下获得值.

javascript boolean numbers type-conversion

16
推荐指数
3
解决办法
2433
查看次数

在Javascript变量声明中使用逻辑AND

我对使用&&这样的声明变量的实际应用感兴趣:

var x = undefined && 4;

// Evaluate to the first falsey value
// or else the last value.

eval(x);
// undefined
Run Code Online (Sandbox Code Playgroud)

我理解如何评估价值(参见本答复).我也理解它的姐妹||(参见这里有一个很好的描述)以及为什么用以下表达式声明变量是有用的:

// Some other variable
var y;

var x = y || 4;

// Evaluate to the first truthy value
// or else the last value.
Run Code Online (Sandbox Code Playgroud)

实际上:使用第一个值,除非第一个值为false; 如果是这样,请使用最后一个值.我们可以||在浏览器控制台中演示这个特性:

> null || 4
  4
> 4 || null
  4

> null || undefined
  undefined
> undefined || null …
Run Code Online (Sandbox Code Playgroud)

javascript

5
推荐指数
1
解决办法
984
查看次数

在命令模式JavaScript中执行函数

我目前正在阅读Addy Osmani的JavaScript设计模式,可以在这里找到:http://addyosmani.com/resources/essentialjsdesignpatterns/book/.

我发现它非常有趣,非常有帮助.我确实对本书中的一种模式有一个疑问,即命令模式.

在本书中,Addy解释了命令模式有助于更好地解耦对象和方法调用.

这是他的例子我的版本:

var person = {
    sayName: function (name) {
        return "My name is " + name;
    },
    sayAge: function (age) {
        return "My age is " + age;
    },
    sayGender: function (gender) {
        return "My gender is " + gender;
    }
}
person.execute = function (name) {
    return person[name] && person[name].apply(person, [].slice.call(arguments, 1));
}
console.log(person.execute("sayName", "Sethen"));
Run Code Online (Sandbox Code Playgroud)

魔术是在execute方法中完成的.如您所见,您传递方法名称和参数,该方法负责其余部分.

我的困惑源于该execute方法实际返回的内容.当你看它时,它看起来像一个短路&&,我一直认为由于JavaScript转换而返回一个布尔值.

但是,如果您尝试使用代码,则可以正常运行,并进行日志记录My name is Sethen.

此外,我发现简单地使用return person[name].apply(person, [].slice.call(arguments, …

javascript

4
推荐指数
1
解决办法
1694
查看次数

为什么在 Javascript 中布尔运算符既不返回 false 也不返回 true?

var operand1 = null;
var operand2 = true;
var booleanOperatorReturnsABoolean = operand1 && operand2;
booleanOperatorReturnsABoolean == false || booleanOperatorReturnsABoolean == true
Run Code Online (Sandbox Code Playgroud)

结果:

在 JavaScript 控制台中运行此命令表明布尔运算符 (&&) 有时可能不会产生布尔值

javascript

2
推荐指数
1
解决办法
700
查看次数

标签 统计

javascript ×4

boolean ×1

numbers ×1

type-conversion ×1