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')();