如何在if语句内返回对象值?及如何修复if语句内代码执行问题?
解答你的两个JavaScript对象与if语句问题
问题2:让代码中if语句内的代码生效
先看你给出的这段代码:
const player1 = { name: "Ashley", color: "purple", isTurn: true, play: function() { if (this.isTrue) { return `this["name"] is now playing`; } } };
这里有两个小问题导致if里的代码不生效:
- 属性名拼写错误:你的对象里定义的是
isTurn,但if判断里写的是this.isTrue,名字不匹配导致条件永远为false,自然不会执行内部代码。 - 返回语句的属性访问可以更简洁:
this["name"]完全可以写成this.name,两种写法都有效,但后者可读性更好。
修改后的代码如下:
const player1 = { name: "Ashley", color: "purple", isTurn: true, play: function() { if (this.isTurn) { // 修正属性名 return `${this.name} is now playing`; // 用模板字符串拼接属性值 } } }; // 调用方法测试 console.log(player1.play()); // 会输出 "Ashley is now playing"
现在调用player1.play()时,因为this.isTurn为true,就会执行if内部的返回语句了。
问题1:如何在if语句内部返回对象的值?
刚才的修改已经包含了这个场景的解决方案,核心逻辑分两种情况:
- 在对象的方法内部:用
this关键字访问对象的属性,然后直接返回属性值或包含它的内容:
要是想返回拼接后的字符串,就用模板字符串(play: function() { if (this.isTurn) { return this.name; // 直接返回name属性的值 } }${})把属性值嵌进去,像刚才修改后的代码那样。 - 在对象外部的if语句中:直接用对象名加属性名访问并返回即可:
if (player1.isTurn) { console.log(player1.name); // 直接访问player1的name属性 }
内容的提问来源于stack exchange,提问作者newtocode
相关产品推荐
相关产品推荐

