好的,所以我有一个带匹配正则表达式查询的简单变量声明。
var image = decl.val.match(/(url\(.*\))/)[1];
但是我很快发现我无法做到这一点,因为有时没有匹配,而是返回未定义或类似的错误:
Uncaught TypeError: Cannot read property '1' of null
我想尽可能地将其修复为内联,因为我将不得不在我的代码中多次迭代。谢谢你的帮助!
答案 0 :(得分:1)
您可以这样做,而不是试图找到神奇的1行解决方案:
var m = decl.val.match(/url\(.*\)/);
var image = m ? m[0] : "";
答案 1 :(得分:1)
你可能得到的最短单线是
var image = decl.val.match(/(url\(.*\))/)); image = image ? image[1] : ""
(或者""
的首选替代方案。)
哦,好好想想,你还可以再去一点
var image = (image = decl.val.match(/(url\(.*\))/)) ? image[1] : "";
如果你看起来更好......
这是因为变量在JavaScript中被“提升” - 这意味着首先在代码中搜索所有变量声明(在这种情况下为var image
)并创建这些变量,并且实际代码是之后才执行。