javascript中JSON的默认值

jcu*_*nod 5 javascript json default-value

在代码中:

slider.init({
 foo: "bar"
});

var slider={
 init:function(data){
 }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用data.foo,我会得到"酒吧".

假设我有一个可选的变量fish,可以包含在JSON变量中.如果我引用data.fish,我将被告知它是未定义的或将抛出错误或某事.有没有办法我可以为fish分配一个默认值,这样当我请求时data.fish,即使它没有在参数中设置,我会得到一个默认值?

CMS*_*CMS 10

您可以使用或运算符分配默认值,以防未定义,例如:

var slider = {
 init:function(data){
   var fish = data.fish || "default value";
 }
}
Run Code Online (Sandbox Code Playgroud)

或者你可以创建一个"扩展"函数,合并两个对象,类似于jQuery 扩展函数:

function extend (obj1, obj2) { 
  var result = obj1, val;
  for (val in obj2) {
    if (obj2.hasOwnProperty(val)) {
      result[val] = obj2[val];
    }
  }
return result;
}

var defaults = {val1: 1, val3: 3, fish: 'fish'};
extend(defaults, {val2: 2}); // returns Object val1=1 val3=3 fish=fish val2=2
Run Code Online (Sandbox Code Playgroud)