首页  >  问答  >  正文

javascript - js里使用中文变量名有哪些缺点?

Ecma262规定标识符中可以使用ASCII扩展字符和Unicode字符:

var 安静的美男子 = {高: 149, 富: 0, 帅: undefined};

var ಠ_ಠ = 安静的美男子.帅;

写这样萌的代码,真的不好吗?
在浏览器中执行类似这样的代码有什么隐患吗?
使用中文或颜文字做变量名除了不支持驼峰格式外,还有那些缺点?

高洛峰高洛峰2751 天前1274

全部回复(11)我来回复

  • 高洛峰

    高洛峰2017-04-10 14:39:31

    其实没什么不好,但是

    软件开发应该是国际化程度非常高的一个职业,相对于约定成俗的编程习惯,中文在此谈不上有任何优势,而且根本没这个必要。

    还有一个很复杂的问题,中文输入法一般都是默认使用全角字符的。我们在使用英文写代码的时候并不需要切换语言,但是用中文变量名在输入一部分符号的时候还是要切换成英文(或者是半角字符),挺麻烦的。【如果说非要设置成在中文状态下默认就使用半角符号,作为强迫症我认为这种行为不能忍受,需要打死】

    私下里用用可以,但是我还是倾向于,我希望外国友人也能看懂我的代码。

    回复
    0
  • 迷茫

    迷茫2017-04-10 14:39:31

    这是完成中华民族伟大复兴的必经之路。

    这是中国崛起的前奏。

    “使用汉字做变量名,从我做起”

    使用中文做变量名的程序,在运行时,通常都会弹出一句话:不赞不是中国人

    回复
    0
  • 阿神

    阿神2017-04-10 14:39:31

    挺有意思的问题。不过既然楼主是问缺点,那就专门谈谈缺点。

    1. 首先,有的答案已经指出了,软件开发是一项国际化很高的工作,先谈比较远的,比如某天你们团队招了个老外,老外还要不要做开发了?
    2. 或者你远走他乡,去了个周围都是老外的地方,还要不要复用以前的代码?
    3. 或者,你的代码进到了某个unicode或者中文处理不当的地方(比如某些变态的浏览器,或者很低版本的Node.js或者某些单片机,甚至或者是别人自己写的解释程序),有可能会挂掉,当然也有可能让别人的程序挂掉。
    4. 你的代码进到了某台没有中文字体的机器,如何查看??(和第3点是不同的问题哦)
    5. 或者进到没有中文输入法的机器,如何编辑??
    6. 或者进到编码设置错误的机器(比如Linux),如何查看编辑??
    7. 打起来麻烦
    8. 中文产生混淆的概率比英文要大得多,比如var 一=1,——=2;var 二=一-——;你知道是多少么?
    9. 符号组合做变量容易引入空格或者其它空白字符混淆,比如var 对象={};对象["^_^ "]=1;对象["^_^"]=2;你真的分得清么?
    10. 差不多了,如果被鄙视也算的话,刚好凑够10条

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-10 14:39:31

    没装输入法就不能写代码

    回复
    0
  • 高洛峰

    高洛峰2017-04-10 14:39:31

    你在项目里试试,保证打不死你。

    回复
    0
  • 高洛峰

    高洛峰2017-04-10 14:39:31

    因为大家都不这么写!

    回复
    0
  • 高洛峰

    高洛峰2017-04-10 14:39:31

    外国人看到你写的东西,和你看到下面这段代码,感觉差不多。自行体会一下:

    #define 喵喵喵 main
    #define 喵喵 int
    #define 喵 (
    #define 喵喵呜 )
    #define 喵喵喵喵 {
    #define 喵呜喵 }
    #define 喵呜喵呜喵 printf
    #define 呜 "\n"
    #define 喵呜喵呜 return
    #define 呜喵 0
    #define 喵呜 ;
    #include <stdio.h>
    
    喵喵 喵喵喵 喵 喵喵呜
    喵喵喵喵
    喵呜喵呜喵 喵 "喵喵喵! " 呜 喵喵呜 喵呜
    喵呜喵呜 呜喵 喵呜
    喵呜喵
    

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-10 14:39:31

    有时使用中文反而方便,比如多语言切换:

    var lang={
        locale: 'zh-cn',
        '首页':'首页',
        '菜单':'菜单'
    }
    
    var lang={
        locale: 'en-us',
        '首页':'Home',
        '菜单':'Menu'
    }
    
    <li><%= lang['首页'] %></li>
    <li><%= lang['菜单'] %></li>
    

    通过其他的手段引入不同的lang变量,使用的时候使用中文属性,可以增加可读性,也不会因为词汇量匮乏或者命名不规范造成误解

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 14:39:31

    虽然是行得通,但是你还要考虑文件编码问题的话,中文就不合适了

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-10 14:39:31

    如果能做到比较智能,其实也没大家想的那么噁心,起码在某些非专业的又需要部分编程开发的领域可以降低学习门槛

    因为没有关键字高亮,所以我就手动高亮下

    如果 我的年龄 大于 十八 那么
        我的类型 是 成年人
    

    回复
    0
  • 取消回复