相关疑难解决方法(0)

JavaScript有"短路"评估吗?

可能重复:
使用&&的短路作为if语句?
javascript是否在布尔表达式中使用优化?

我想知道是否__CODE__"短路"评估,如C#中的&& Operator.如果不是,我想知道是否有采用合理的解决方法.

javascript short-circuiting

90
推荐指数
2
解决办法
4万
查看次数

有人可以解释一下John Resig的pretty.js JavaScript是如何工作的吗?

http://ejohn.org/files/pretty.js

// Takes an ISO time and returns a string representing how
// long ago the date represents.
function prettyDate(time){
    var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ")),
        diff = (((new Date()).getTime() - date.getTime()) / 1000),
        day_diff = Math.floor(diff / 86400);

    if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
        return;

    return day_diff == 0 && (
            diff < 60 && "just now" ||
            diff < 120 && "1 minute ago" ||
            diff < 3600 && Math.floor( …
Run Code Online (Sandbox Code Playgroud)

javascript

12
推荐指数
3
解决办法
2145
查看次数

callback && callback()在javascript中意味着什么

我正在浏览一些JS代码并偶然发现了我不理解的以下行:

callback && callback();
Run Code Online (Sandbox Code Playgroud)

这条线做什么?

javascript

11
推荐指数
2
解决办法
5442
查看次数

使用 &amp;&amp; 作为 IF 语句的替代

在挖掘一些代码时,我发现了以下代码段:

"string" != typeof myVar && (myVar = "");
Run Code Online (Sandbox Code Playgroud)

我明白这里发生了什么。如果 myVar 不是字符串,则第一个条件的计算结果为 true,因此计算第二个条件,导致 myVar 设置为 ""。所以它本质上是以下内容的替代品:

if ("string" != typeof myVar)
    myVar = "";
Run Code Online (Sandbox Code Playgroud)

唯一可辨别的区别是两种策略中的前者也是返回语句,尽管我找到的代码没有使用返回值。所以我想知道:

  1. 这两种策略有什么优点或缺点吗?
  2. 如果第一个策略的唯一优点是能够返回一个值,那么我发现的代码片段是否被认为是糟糕的编程,因为它更难阅读?

javascript conditional readability

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

在命令模式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
查看次数

在没有if的情况下,变量之间的含义是什么?

我在javascript中有以下代码行:

q && (c = q === "0" ? "" : q.trim());
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我明白这c等于空字符串或q.trim()结果,但是什么意思q && ()

javascript

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