JS新手求助:如何在字符串中打印变量?代码输出不符合预期
解决JavaScript字符串中打印变量的问题
嘿,我来帮你搞定这个小问题~你遇到的情况是因为两个细节没注意到,咱们一步步来修正:
问题根源
你现在用单引号(')包裹字符串,但JavaScript里要实现变量插值(把变量插到字符串里),得用模板字符串,模板字符串需要用**反引号()**来包裹——就是键盘上ESC键下方、和波浪号~`同一个键的那个符号。
另外,你用了箭头函数作为对象的sayHi方法,箭头函数的this指向和普通函数不一样:它没有自己的this,会继承外层作用域的this,所以直接写${name}或者${this.name}都找不到user对象里的name属性。
修正后的代码
方案一:用普通函数作为对象方法(推荐)
把箭头函数改成普通函数,这样this就会指向当前的user对象,再配合模板字符串就能正确输出变量了:
var user = { name: "Mike", sayHi: function() { console.log(`Hi, I'm ${this.name}`); } }; user.sayHi() // 输出:Hi, I'm Mike
方案二:如果非要用箭头函数
直接引用user.name来获取属性值,同时把字符串改成模板字符串:
var user = { name: "Mike", sayHi: () => { console.log(`Hi, I'm ${user.name}`); } }; user.sayHi() // 输出:Hi, I'm Mike
小总结
- 模板字符串用反引号(
)包裹,里面可以用${变量名}`插入变量; - 对象的方法优先用普通函数,这样
this能正确指向当前对象,方便访问对象的属性。
内容的提问来源于stack exchange,提问作者H.Epstein
相关产品推荐
相关产品推荐

