var universe = true;
var string = 'hello ' + (() => {
if (universe = true) {
return 'universe';
} else {
return 'world';
}
});
为什么这不会回归'你好宇宙'?我怎样才能做到这一点?我正在尝试动态构建一个字符串 - 我的具体用例是创建HTML。
答案 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')();