JavaScript对象中拼接变量的引号语法问题求助
解决JavaScript对象中变量参数传递的语法问题
看起来你是在构建查询配置对象时,卡在了变量值的正确传递上——这种字符串拼接的误区在刚开始写JS对象的时候挺常见的,我来帮你理清楚:
问题根源
你之前写的' + $(prodvariable) + '是把这段字符串字面量当成了value的属性值,而不是让JS把prodvariable的实际值替换进去。在对象字面量中,属性值可以直接引用变量或表达式,不需要用引号包裹拼接代码(那种写法是单独构建字符串时才用的)。
正确写法分两种情况
假设prodvariable是存储数字的变量(比如let prodvariable = 6;),结合你需求里参数类型为varchar的要求,推荐这几种写法:
1. 直接将数字转为字符串
如果prodvariable是纯数字类型,显式转成字符串匹配varchar类型:
let prodvariable = 6; // 你的数字变量 var selectdata = { "tablename": "dbo.vw_bla", "where": "ID_Prod like @idprod", "whereparameters": [{ "name": "idprod", "value": prodvariable.toString(), // 把数字转成字符串格式 "type": "varchar" }], "orderby": "ID_Prod ASC" };
2. 用模板字符串(适合需要通配符的场景)
如果你的like查询需要加通配符(比如%6%),用ES6模板字符串会更直观:
let prodvariable = 6; var selectdata = { "tablename": "dbo.vw_bla", "where": "ID_Prod like @idprod", "whereparameters": [{ "name": "idprod", "value": `${prodvariable}`, // 纯值写法,或者`%${prodvariable}%`添加通配符 "type": "varchar" }], "orderby": "ID_Prod ASC" };
3. 如果prodvariable是jQuery选择器
如果你代码里的$(prodvariable)是想用jQuery获取DOM元素的值(比如prodvariable是元素选择器,比如'#prodInput'),那要先获取值再传入:
let prodSelector = '#prodInput'; // 你的选择器变量 let prodValue = $(prodSelector).val(); // 获取输入框的字符串值 var selectdata = { "tablename": "dbo.vw_bla", "where": "ID_Prod like @idprod", "whereparameters": [{ "name": "idprod", "value": prodValue, // 直接用获取到的字符串值 "type": "varchar" }], "orderby": "ID_Prod ASC" };
为什么之前的写法不对?
你之前的写法相当于把' + $(prodvariable) + '这个固定字符串直接赋值给了value,而不是让JS解析prodvariable的变量值。对象字面量里的属性值可以是任何合法的JS表达式,直接写变量名或转换逻辑就可以,不需要额外的引号和拼接符号。
内容的提问来源于stack exchange,提问作者hacking_mike
相关产品推荐
相关产品推荐

