{
let defconfig = {
name : "我是默认name",
age : "我是默认age:12",
}
defconfig = {...defconfig,...config}
return defconfig
}
function combineConfig_Object(config)
{
let defconfig = {
name : "我是默认name Object",
age : "我是默认age:12 Object",
}
Object.assign(defconfig, config)
return defconfig
}
function combineConfig_jquery(config)
{
let defconfig = {
name : "我是默认name jquery",
age : "我是默认age:12 jquery",
}
$.extend(defconfig, config)
return defconfig
}
function combineConfig_for(config)
{
let defconfig = {
name : "我是默认name jquery",
age : "我是默认age:12 jquery",
}
for (let k in config)
{
defconfig[k] = config[k]
}
return defconfig
}
>var a = 3undefined
>a
3
>var str = "12345678"
undefined
>str
'12345678'
>str.substr(a)
'45678'
>str.substr('+a+')
'12345678'
>str.substr(a-1)
'345678'
在
nodejs
中的执行结果,因为
a
==
3,所以你调用
str.substr(a)
就等于调用了
str.substr(3),而
str.substr(a-1)
就等同于调用
str.substr(2)。进一步的,你调用
str.substr('+a+'),实际上是往
substr
方法里传了一个字符串
+a+,字符串不是数字,substr
把它理解为了0。
使用变量作为参数和使用字面量作为参数没有任何区别,在方法执行那一刻变量的值是什么,那么就相当于你用那个值的字面量去调用方法。
如果只需要result.data里的数据,可以把他再次序列化成json传过去
+'<a onclick="aa('+JSON.stringify(result.data[i]).replace(/"/g,"&"+"#34")+')">'我当你result.data这个对象老是被改动数据,如果result.data[?]是不会被改变的对象的话,还可以把这些数据独立保存起来,比如最直接的放到window对象里:
for(var i=0i<result.data.lengthi++){window["data_"+i]=result.data[i]
...
+'<a onclick="aa(data_'+i+')">'//这时data_*已经是一个赋了值变量名了
+...
}