Jer*_* S. 57 javascript object
我经常发现自己将配置值传递给访问它们的函数,如下所示:
var arg1 = 'test1';
if(isUndefined(config.args.arg1)){
arg1 = config.args.arg1;
}
var arg2 = 'param2';
if(isUndefined(config.args.arg2)){
arg2 = config.args.arg2;
}
var arg3 = '123';
if(isUndefined(config.args.arg3)){
arg3 = config.args.arg3;
}
Run Code Online (Sandbox Code Playgroud)
之后我会像这样使用它们:
var url = '<some-url>?id='+arg1+'&='+arg2 +'=' + arg3;
Run Code Online (Sandbox Code Playgroud)
jQuery/ExtJS或任何其他框架是否提供了一种以简单的方式访问这样的变量的解决方案,并为变量赋予默认值?
就像是:
getValueOfObject(config,'args.arg3','<default>');
Run Code Online (Sandbox Code Playgroud)
或者可能有一个标准的解决方案.
注意:
我也在考虑你有默认值的常见模式
var defaults = {
args: {
args1: ....
}
...
}
Run Code Online (Sandbox Code Playgroud)
并做一个对象合并.
然后将对象编码为param String.但正如您所看到的,对象值有时也包含参数名称.
kar*_*m79 67
通常,当某些变量求值为falsy时,可以使用or运算符指定默认值:
var foo = couldBeUndefined || "some default";
Run Code Online (Sandbox Code Playgroud)
所以:
var arg1 = config.args.arg1 || "test";
var arg2 = config.args.arg2 || "param2";
Run Code Online (Sandbox Code Playgroud)
假设config.args始终定义,正如您的示例代码所暗示的那样.
Tim*_*hiy 43
在 ECMAScript 2020 中,使用Nullish 合并运算符可能比or使用运算符更安全。
let foo = obj.maybeUndefined ?? "default value";
Run Code Online (Sandbox Code Playgroud)
JS 将 0、-0、null、false、NaN、undefined 或空字符串 ("") 视为falsy。因此,or在下面的示例中使用运算符设置默认值可能会导致意外结果
let obj = { maybeUndefined: 0 };
let foo = obj.maybeUndefined || 1; // foo == 1
Run Code Online (Sandbox Code Playgroud)
这里,当实际定义时,foo变得等于, 。如果 只有当实际上是or时才应该分配默认值,那么我们可以使用Nullish 合并运算符。1maybeUndefinedfoomaybeUndefinedundefinednull
let obj = { maybeUndefined: 0 };
let foo = obj.maybeUndefined ?? 1; // foo == 0
let obj = {};
let foo = obj.maybeUndefined ?? 1; // foo == 1
Run Code Online (Sandbox Code Playgroud)
使用 ES2018,您现在可以编写options = { ...defaults, ...options }:
现在可以使用比
Object.assign().Run Code Online (Sandbox Code Playgroud)const obj1 = { foo: 'bar', x: 42 }; const obj2 = { foo: 'baz', y: 13 }; const clonedObj = { ...obj1 }; // Object { foo: "bar", x: 42 } const mergedObj = { ...obj1, ...obj2 }; // Object { foo: "baz", x: 42, y: 13 }
| 归档时间: |
|
| 查看次数: |
46858 次 |
| 最近记录: |