JavaScript中使用字符串字面量拼接遇变量未定义错误排查
问题修复方案
你的代码里有三个关键问题,逐个解决:
1. 变量作用域问题
函数内部用const声明的result是局部变量,函数外部的console.log(result)根本访问不到它。得调用createSentence函数,把它的返回值打印出来。
2. 模板字符串未从对象取值
你直接写${name},JS找不到这个变量,必须从传入的obj对象里提取属性,比如obj.name、obj.age、obj.job。
3. const变量不能重新赋值
const声明的变量是常量,一旦赋值就不能修改。你先给result赋值空字符串,又重新赋值模板字符串,这会触发报错,直接一步赋值就行。
修复后的完整代码
let obj = { name: 'Mitch', age: 29, job: 'tutor' }; function createSentence(obj) { // 直接从obj取属性拼接字符串 const result = `Hello my name is ${obj.name}, I am ${obj.age} years old and I am a ${obj.job}`; return result; } // 调用函数并打印返回值 console.log(createSentence(obj));
进阶写法(解构对象)
如果觉得obj.xxx麻烦,可以先解构对象,代码更简洁:
let obj = { name: 'Mitch', age: 29, job: 'tutor' }; function createSentence(obj) { // 解构obj的属性到变量 const { name, age, job } = obj; const result = `Hello my name is ${name}, I am ${age} years old and I am a ${job}`; return result; } console.log(createSentence(obj));
内容的提问来源于stack exchange,提问作者Michal Szarka
相关产品推荐
相关产品推荐

