有效的特殊字符 ↂ 作为变量名 - Safari/iOS 时出错
Valid special character ↂ as variable name - error on Safari/iOS
我使用特殊字符 ↂ 作为 JS 变量名来命名我的框架。根据 ES5 和 ES6 的规范,它应该是有效的(它在 Unicode 组 'Number, Letter' (http://www.fileformat.info/info/unicode/category/Nl/list.htm))
在 iOS Safari 上,但是这给出了错误:SyntaxError: Invalid character '\u8578'
。这看起来很奇怪,因为该字符代码似乎是一个汉字:http://www.fileformat.info/info/unicode/char/8578/index.htm
因此下面的代码片段不适用于 iOS Safari(尚未测试桌面 Safari)
<script>
var ↂ = 5;
alert(ↂ);
</script>
我尝试在脚本标签上为 charset="..."
设置一些值,但这没有帮助
- 为什么 iOS Safari 不接受即使在 ES5 中也应该有效的 ↂ?
- 有没有办法在不出现错误的情况下使用 ↂ?
请不要回复 'It is bad practice to use special characters in JS' 等未经询问的建议。大家的意见我都知道了,请大家保密
我会回答我自己的问题。显然,并非所有现代浏览器都遵循 ES5/ES6 允许字符的规范。我写了一个有用的代码片段,它会告诉你哪些变量名在 current 浏览器中有效:
var allowed = '';
function check() {
var char = String.fromCharCode(i);
if (char.length) {
try {
eval("var " + char + "=1;");
allowed += char + ' ';
} catch (e) {}
}
}
for (var i = 0; i <= 15000; i++) {
check(i);
}
document.body.innerHTML = allowed;
也在 JSFiddle 上:https://jsfiddle.net/9539cc7q/
根据您的喜好提高最大字符代码(现在为 15000),然后代码会 运行 更长
当运行在Safari上我们确实可以看到不允许使用ↂ符号
我使用特殊字符 ↂ 作为 JS 变量名来命名我的框架。根据 ES5 和 ES6 的规范,它应该是有效的(它在 Unicode 组 'Number, Letter' (http://www.fileformat.info/info/unicode/category/Nl/list.htm))
在 iOS Safari 上,但是这给出了错误:SyntaxError: Invalid character '\u8578'
。这看起来很奇怪,因为该字符代码似乎是一个汉字:http://www.fileformat.info/info/unicode/char/8578/index.htm
因此下面的代码片段不适用于 iOS Safari(尚未测试桌面 Safari)
<script>
var ↂ = 5;
alert(ↂ);
</script>
我尝试在脚本标签上为 charset="..."
设置一些值,但这没有帮助
- 为什么 iOS Safari 不接受即使在 ES5 中也应该有效的 ↂ?
- 有没有办法在不出现错误的情况下使用 ↂ?
请不要回复 'It is bad practice to use special characters in JS' 等未经询问的建议。大家的意见我都知道了,请大家保密
我会回答我自己的问题。显然,并非所有现代浏览器都遵循 ES5/ES6 允许字符的规范。我写了一个有用的代码片段,它会告诉你哪些变量名在 current 浏览器中有效:
var allowed = '';
function check() {
var char = String.fromCharCode(i);
if (char.length) {
try {
eval("var " + char + "=1;");
allowed += char + ' ';
} catch (e) {}
}
}
for (var i = 0; i <= 15000; i++) {
check(i);
}
document.body.innerHTML = allowed;
也在 JSFiddle 上:https://jsfiddle.net/9539cc7q/
根据您的喜好提高最大字符代码(现在为 15000),然后代码会 运行 更长
当运行在Safari上我们确实可以看到不允许使用ↂ符号