如何使用串联匿名函数追加到字符串?

时间:2016-03-25 20:51:10

标签: javascript

var universe = true;
var string = 'hello ' + (() => {
    if (universe = true) {
        return 'universe';
    } else {
        return 'world';
    }
});

为什么这不会回归'你好宇宙'?我怎样才能做到这一点?我正在尝试动态构建一个字符串 - 我的具体用例是创建HTML。

3 个答案:

答案 0 :(得分:2)

您只是将函数引用字符串连接起来,这将导致连接 原语 值该函数对象到目标字符串。所以在这种情况下你必须调用该函数而不是直接连接它。

var universe = true;
var string = 'hello ' + (() => {
    if (universe == true) {
        return 'universe';
    } else {
        return 'world';
    }
})();

您的代码最易读的版本是,

var universe = true;
var fetchResult = () => (universe) ? 'universe' : 'world';
var string = 'hello ' + fetchResult();

另请注意,您 if语句中分配值而不是比较。那个if语句将被评估为true阻止,因为universe = true将永远评估为true

答案 1 :(得分:1)

您需要调用匿名函数:

var universe = true;
var string = 'hello ' + (() => {
    if (universe = true) {
        return 'universe';
    } else {
        return 'world';
    }
})(); // <--- notice () here

答案 2 :(得分:1)

更简洁的方式

var universe = true;
var string = 'hello ' + (() => universe ? 'universe' : 'world')();