搜索一个函数,它将 rhs 转换为 lhs 的类型。例如
var x=false // x is boolean now;
x=assign (x, "true"); //should convert "true" to boolean and return that
x=assign (x, 1); // dto, convert 1 to true
x=0 // x is number
x=assign (x, "123"); // should convert "123" to 123;
所以可以编写这样的函数,这不是问题。但是:是否有某种方式可以完整地实现这样的事情?我从这样的事情开始:
function assign (v, x) {
if (typeof v==typeof x) {
return x;
}
switch (typeof v) {
case 'boolean' : {
return x=='true'?true:false;
}
case 'number' : {
return parseFloat(x);
}
}
return "xxx";
}
var v=true;
var x='true';
var r1=assign (v, x);
console.log (typeof r1+ " "+r1);
v=10;
x="123";
var r1=assign (v, x);
console.log (typeof r1+ " "+r1);
这当然不完整,但也许显示了我的目标。