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

How to append to string with a concatenated anonymous function?

本文关键字:函数 追加 字符串 何使用      更新时间:2023-09-26
var universe = true;
var string = 'hello ' + (() => {
    if (universe = true) {
        return 'universe';
    } else {
        return 'world';
    }
});

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

您只需将

函数引用字符串连接起来,这将导致将该函数对象的基元值连接到目标字符串。因此,在这种情况下,您必须调用该函数,而不是直接连接它。

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 语句分配一个值,而不是比较它。那,如果语句将始终被计算为true块,因为universe = true将始终计算为true

你需要调用匿名函数:

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

更简洁的方式

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