new webpack.DefinePlugin({ PRODUCTION: JSON.stringify(true),VERSION: JSON.stringify("5fa3b9"),BROWSER_SUPPORTS_HTML5: true,TWO: "1+1","typeof window": JSON.stringify("object") })
https://github.com/webpack/docs/wiki/list-of-plugins#defineplugin
这似乎非常不寻常,不必要和“易于出错”.
是类型检查问题吗?
解决方法
答案在下面的例子中:
- If the value is a string it will be used as a code fragment.
- If the value isn’t a string,it will be stringified (including functions).
即字符串的值逐字插入到源代码中.
传递JSON.stringify(true)或直接传递true是相同的,因为非字符串值被转换为字符串.
但是,JSON.stringify(‘5fa3b9’)和“5fa3b9”之间有很大的区别:
假设你的代码是
if (version === VERSION)
那么VERSION:JSON.stringify(‘5fa3b9’)将导致
if (version === "5fa3b9")
但是VERSION:“5fa3b9”会导致
if (version === 5fa3b9)
这是无效代码.