JavaScript – 为什么Webpack的DefinePlugin需要我们将所有内容包装在JSON.stringify中?

前端之家收集整理的这篇文章主要介绍了JavaScript – 为什么Webpack的DefinePlugin需要我们将所有内容包装在JSON.stringify中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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)

这是无效代码.

原文链接:https://www.f2er.com/js/150002.html

猜你在找的JavaScript相关文章