有中文字符的JS变量

问题代码
JS代码:

JScript code
 
  
var 中文字符; var 面食、包子 = [包子,包子,面条,茄子];

见过正常的变量名,没见过中文的正常的变量名。
所以…… 以上代码可用吗??
带着问题,我们来看看 ECMAScript 的规定。

变量的定义
对于变量的定义,在ECMAScript 规范中规定有这么两点:
1. 第一个字符必须是字母、下划线(_)或美圆符号($)。
2. 余下的字符可以是下划线、美圆符号或任何字母或数字字符。
以上可用的字符集中没有提到汉字和中文字符。

关于标识符的更多信息,请参考 ECMAScript 规范 7.6 Identifier Names and Identifiers中的内容。

变量名可以包含是汉字吗?
做个测试,test.html(文件编码为 UTF-8):

HTML code
 
  
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> < META http-equiv =Content-Type content ="text/html; charset=utf-8" > < script type ="text/javascript" > var 中文字符 = " 你好,世界 " ; alert(中文字符); var 中文X字符 = " 你好,世界X " ; alert(中文X字符); </ script >

注意,一定要用 META 标签确保页面编码和文件编码一致。
可喜可贺,所有浏览器都支持中文变量名。

变量名中可以包含中文字符吗?
看一下的例子:

HTML code
 
  
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> < META http-equiv =Content-Type content ="text/html; charset=utf-8" > < script type ="text/javascript" > var 中文、字符 = " 你好,世界 " ; alert(中文、字符); </ script >

这次,除了 IE 之外,其他浏览器无一幸免。

再试一下英文和中文字符的混合变量:

HTML code
 
  
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> < META http-equiv =Content-Type content ="text/html; charset=utf-8" > < script type ="text/javascript" > var as、you = " 你好,世界 " ; alert(as、you); </ script >

IE 再一次表现力它的“宽容”,而其他浏览器又挂掉了。

看来
只有 IE 中的 Javascript 变量名支持中文字符。

蛊惑之中文逗号
一定要小心中文逗号分隔变量的做法:

HTML code
 
  
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> < META http-equiv =Content-Type content ="text/html; charset=utf-8" > < script type ="text/javascript" > var as,you = " 你好,世界 " ; alert(as,you); </ script >

这段代码的原意是定义两个变量,一个是 as,一个是 you,而且还给 you 赋了初始值。但是,事与愿违,逗号错了。所以,如果这时候你访问 as 或者是 you,对不起,没有…… IE里倒是有这个变量:as,you。

所以,要警惕这个中文的逗号:

解决方案
避免在变量名(即标识符)中出现中文标点,以保证兼容各浏览器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值