fif*_*nce 9 javascript coffeescript
CoffeeScript变成user?.id了
if (typeof user !== "undefined" && user !== null) {
user.id;
}
Run Code Online (Sandbox Code Playgroud)
是否可以创建一个exists类似的JavaScript函数?即
exists(user).id
Run Code Online (Sandbox Code Playgroud)
会导致任何一个user.id或null
如果一个函数接受另一个参数会更容易exists(user, 'id'),但是看起来不那么好.
不,你不能产生这样的功能.问题是这个:
any_function(undeclared_variable)
Run Code Online (Sandbox Code Playgroud)
如果undeclared_variable没有在任何地方声明,将产生ReferenceError .例如,如果您运行此独立代码:
function f() { }
f(pancakes);
Run Code Online (Sandbox Code Playgroud)
你会得到一个ReferenceError因为pancakes没有在任何地方声明.演示:http://jsfiddle.net/ambiguous/wSZaL/
但是,typeof运算符可以用于尚未声明的内容,因此:
console.log(typeof pancakes);
Run Code Online (Sandbox Code Playgroud)
只需undefined在控制台中登录即可.演示:http://jsfiddle.net/ambiguous/et2Nv/
如果您不介意可能的ReferenceErrors,那么您已经在问题中拥有了必要的功能:
function exists(obj, key) {
if (typeof obj !== "undefined" && obj !== null)
return obj[key];
return null; // Maybe you'd want undefined instead
}
Run Code Online (Sandbox Code Playgroud)
或者,因为您不需要typeof在此处使用未声明的变量,您可以将其简化为:
function exists(obj, key) {
if(obj != null)
return obj[key];
return null;
}
Run Code Online (Sandbox Code Playgroud)
请注意,更改为!=,undefined == null即使undefined === null不是,也是如此.
| 归档时间: |
|
| 查看次数: |
1558 次 |
| 最近记录: |