我正在使用国际化库 l10n.js并且当它试图从客户端浏览器获取值时,您不能将一个值传递给库以告诉它您想使用哪种语言进行翻译;所以有人告诉我,如果你真的想设置你需要做的事情,比如:
String.locale = 'en-GB';
就我而言,我正在做:
String.locale = $('html').attr('lang');
...就在文件的顶部。
这有效,但是在 PhpStorm 中我收到警告:
Value assigned to this primitive will be lost
我检查了this question了解他们为什么收到警告,但我不确定 - 它基本上只是告诉我 String.locale
的当前值将丢失吗?
最佳答案
这看起来像是 PhpStorm 类型推理系统的误报。
String
不是 JavaScript 语言中的原语。在这里为 String
的属性赋值是安全的,因为 String
函数是一个 object
。
我想分配给这个原语的值将丢失
的关键思想可以用代码来描述:
> var primitive = "somestring";
> primitive.someprop = 3;
3
> primitive.someprop;
undefined
在 JavaScript 中有 5 种基本类型:undefined、null、boolean、string 和 number。基元不是对象,它们没有属性。如果 JavaScript 检测到尝试将属性分配给原语,它确实会将原语强制转换为对象。但是这个新对象没有引用,将立即成为垃圾收集的饲料。因此分配给原语的值将丢失。 link
关于javascript - 当设置 String.locale 的值时,分配给原语的值将在 PhpStorm 中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40785719/