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

这似乎非常不寻常,不必要并且容易发生“开发错误”。

是类型检查问题吗?

最佳答案

答案在示例下方:



IE。字符串的值将逐字插入源代码中。

传递JSON.stringify(true)或直接传递true都是相同的,因为非字符串值会转换为字符串。

但是,JSON.stringify('5fa3b9')"5fa3b9"之间有很大的区别:

假设您的代码是

if (version === VERSION)

然后VERSION: JSON.stringify('5fa3b9')将导致
if (version === "5fa3b9")

但是VERSION: "5fa3b9"将导致
if (version === 5fa3b9)

这是无效的代码。

关于javascript - 为什么Webpack的DefinePlugin要求我们将所有内容包装在JSON.stringify中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39564802/

10-10 12:56