我可以用javascript为对象设置条件变量吗?
我试图根据if语句决定变量应该是什么来为对象设置变量我可以用javascript为对象设置条件变量吗?,javascript,Javascript,我试图根据if语句决定变量应该是什么来为对象设置变量 const object = { name: name, subject: subject, text: text, };
const object = {
name: name,
subject: subject,
text: text,
};
if (1 >2){
var name = 'Lionel'
var subject = 'Hello';
var text = 'Is it me your looking for?';
}else{
var name = 'Queen'
var subject = 'Bicycle!!';
var text = 'I want to ride one!';
}
console.log(object);
电流输出:
{name:undefined,subject:undefined,text:undefined}
期望输出:
{name:Queen,subject:Bicycle!!,text:I want to ride!}您没有更新创建的对象。试试这个
let obj = {
name: name,
subject: subject,
text: text,
};
if (1 > 2) {
obj.name = 'Lionel'
obj.subject = 'Hello';
obj.text = 'Is it me your looking for?';
} else {
obj.name = 'Queen'
obj.subject = 'Bicycle!!';
obj.text = 'I want to ride one!';
}
console.log(obj);
未定义
结果的原因是您正在引用声明之前的变量
您可以这样使用(如果只有两个选项):
const object = 1 > 2 ?
{
name: "Lionel",
subject: "Hello",
text: "Is it me you'r looking for"
} :
{
name: "Queen",
subject: "Bicycle!!",
text: "I want to ride one!"
};
可以使用三元运算符在对象初始化时执行此操作
let条件=(1>2);
设obj={
姓名:条件?'Lionel':'Queen',
主题:条件“你好”:“自行车!!”,
文字:条件?“是你在找我吗?”:“我想骑一辆!”
};
控制台日志(obj)代码>使用构造函数,而不是随意重命名变量
请注意,不要使用var在代码块中声明变量。它使变量成为全局变量,这将导致冲突,尤其是与您级别的代码冲突。使用let代替
构造函数(名为construct的函数)的美妙之处在于它不会改变变量object
中已存储的对象,而是创建一个新的对象并替换object
中已存储的对象。这还可以防止冲突和奇怪的代码副作用。这与函数式编程范式相一致
let construct=(名称、主题、文本)=>({
姓名:姓名,,
主题:主题,,
文本:文本,
}),
对象
如果(1>2)object=construct('Lionel','Hello','it me your looking?');
else object=construct('Queen','Bicycle!!','I want to骑一辆!');
console.log(对象)代码>在尝试在对象中使用这些变量之前,您需要分配变量……您想在创建对象时只检查一次语句,还是考虑以后更改对象中的一些值,并希望每次运行if语句?您的实际情况是什么?您的代码抛出一个错误:ReferenceError:name未定义