如何在Javascript中显示符号
How are symbols displayed in Javascript?
如果我说sym1 = Symbol();
, Symbol
函数是否像下面的g
函数一样工作,
> g = function(){
| return 2; //return some random unique value based on some internal algo
| }
g()
> var sym1 = g();
> sym1
2
现在,当我执行var sym1 = Symbol();
,并记录sym1
时,控制台显示Symbol()
,而不是显示Symbol
函数返回的值。
所以我的问题是:Symbol
函数是如何工作的?当您输入sym1
时,控制台如何能够显示Symbol()
而不是某些值?我们能写出这样的函数吗?
是的,Symbol
只是一个函数,类似于1任意的function g() { return something }
。
但是,与您问题中的示例g
不同,它不返回数字,而是符号,这是ES6中的新基本值类型。
当我输入
sym1
时,控制台显示Symbol()
,而不是显示函数Symbol返回的值。
你认为返回的值是什么,你认为它应该如何显示?
您的g
函数返回的数字只是64位2的一些集合。以某种方式3,控制台从中派生一个以10为基数的字符串,以显示您所期望的数字。
现在,什么是符号?它只是一个有标识的值,我们甚至不知道它是如何实现的。目前还不清楚如何显示,或者是否会显示。它不是一个数字,也不是一个字符串。也许是id4之类的?
然而,ES6已经采取了预防措施,每个符号都被赋予一个描述字符串5,可以作为可选参数传递给Symbol
函数。此外,ES6也在§19.4.3.2中指定了符号应该如何显示为字符串。这就是控制台通常使用的。
这个"描述性字符串"很像对Symbol
的调用,例如
var sym1 = Symbol("my description");
console.log(sym1.toString()); // "Symbol(my description)"
console.log(sym1); // Symbol(my description)6
var sym2 = Symbol();
console.log(sym2.toString()); // "Symbol()"
console.log(sym2); // Symbol()6
1:然而,它是一个普通函数,而不是构造函数,不能用new
调用。
2:加上某种类型信息,它是一个数字,给64位一个意义
3:明确地说,控制台可能在遇到数字
时使用.toString
作为数字。4: Chrome显示这样的每个对象,当你采取堆快照与开发工具,例如
5:是的,它比唯一标识
更重要6:实现依赖,取决于你的console
window['Symbol']函数是否像下面的函数g一样工作,
不确定实际问题?虽然,出现"no"
这里是混乱,当我说,> sym1控制台显示Symbol()而不是显示函数Symbol
返回的值
Symbol()
不返回 function
,而是返回"唯一且不可变的数据类型,可以用作标识符"
看到象征
symbol
是唯一且不可变的数据类型,可以用作对象属性的标识符。符号对象是隐式的符号原语数据类型的对象包装器。
var sym = Symbol("foo");
var obj = {};
obj[sym] = 1;
console.log(obj.sym); // `undefined`
console.log(Object.keys(obj)) // `[]`
console.log(obj[sym]); // `1`
参见ES6 In Depth: Symbols
- 浏览器intl.NumberFormat未正确显示货币符号
- JS toLocaleString始终显示货币符号,而不考虑区域设置
- 如何使用 JQuery 显示带有加载符号的数据表
- 表情符号显示为原始 HTML 代码
- 在 Javascript 中显示 unicode 字符(表情符号)
- 显示UTF符号
- 如何使用Javascript和Angular显示货币符号
- angularjs不显示国际重音符号和重音符号
- 货币符号不't在javascript中正确显示
- 使用 Javascript 在模糊的输入上显示插入符号
- 无法显示表情符号值
- 未显示 Jssor 项目符号导航器
- 为什么项目符号图显示十进制数,而我们的范围为1
- 如何根据条件显示包含唯一项目符号的无序列表
- 少符号 (<) 不显示在剑道绑定到 html 上
- 为什么IE无法正确显示我的HttpHandler Web应用程序中的特殊符号
- 加载页面时,“>”符号显示为“>”
- 从sqlite数据库中获取西班牙口音时显示符号
- 如何在Javascript中显示符号
- Arcgis javascript api,根据缩放程度显示符号