在js中无法识别带有reg表达式的变量

时间:2018-01-13 02:05:56

标签: javascript regex variables undefined

我正在尝试使用slush生成模板,我的代码仓库在这里: https://github.com/NaveenDK/slush-template-generator/blob/master/templates/react-native-app/MediaButtons.js

即使模板文件本身运行正常,当我尝试使用MediaButtons.js文件中的以下行生成slush时

 let match = /\.(\w+)$/.exec(filename);
    let type = match ? `image/${match[1]}` : `image`;

我收到一条错误消息,表示匹配'没有定义,当我用slush搭建它并且它在templates文件夹中时。 我的猜测是reg表达式没有被正确解释

感谢您的帮助! 纳温

1 个答案:

答案 0 :(得分:8)

当您使用Slush生成时,您的代码会被更改(最小化或者您要求它执行的任何操作),但文字模板不会。因此,在运行时,变量match不再被声明,但在评估type的文字值时仍然可以访问它。并且引发了错误。

当您不使用Slush生成时,您的代码将保持不变并且有效。

要避免此问题,请更改为:

let match = /\.(\w+)$/.exec(filename);
let type = match ? 'image/'+match[1] : 'image';