三目运算符:
条件判断?是 :否 返回结果
var num = 1 > 0? 2+2 : 1+1; 先判断1>0吗?1大于0,返回冒号前面的4
var num = 1 < 0? 2+2 : 1+1; 先判断1<0吗?1不小于0,返回冒号后面的2
这个三目运算符比if更高端,if只能判断,并不能返回结果,就相当于else if里面加return。
var num = 1 > 0 ? ("10" > 9 ? 1 : 0) : 2;
var num = 1 > 0 ? ("10" > "9" ? 1 : 0) : 2;
先算括号里面的,字符串10小于字符串9,字符串比较规则是比较逐位的ASCII值!
返回0,1大于0,返回0.
那现在简化一下深层克隆的代码:
var obj = {
name : "abc",
age : 123,
card : ["visa","master"],
wife : {
name : "bcd",
son : {
name : "aaa"
}
}
}
var obj1 = {
}
function deepClone(origin,target){
var target = target || {},
toStr = Object.prototype.toString,
arrStr = "[object Array]";
for(var pro in origin){
if(origin.hasOwnProperty(pro)){
if(origin[pro] != "null" && typeof(origin[pro]) == "object"){
target[pro] = (toStr.call(origin[pro]) == arrStr)? [] : {};
deepClone(origin[pro],target[pro]);
}else{
target[pro] = origin[pro];
}
}
}
return target;
}
是不是很简单了!