• IE浏览器中js使用中文标识符的bug


    今天在一个网站看到了作者使用中文命名。我们知道js中可以使用中文标识符,如变量,类名,参数名,方法名等。如下代码:

    function 学生(姓名,年龄){//类名:学生,参数:姓名,年龄
    	this.姓名=姓名;
    	this.年龄=年龄;
    }
    学生.prototype.获取姓名=function(){//方法名:获取姓名
    	return this.姓名;
    }
    学生.prototype.设置姓名=function(名字){//方法名:设置姓名
    	this.姓名=名字;
    }
    
    var student1 = new 学生("张三",18);
    alert(student1.获取姓名());
    student1.设置姓名("李四");
    alert(student1.获取姓名());

    new了一个学生类的实例student1,然后调用相应的方法第一次弹出“张三”,修改后弹出“李四”。


    但有个bug,如下: 

    var 中国,北京=["海淀","朝阳","东城","西城"];
    alert(中国,北京);
    

    定义了一个变量"中国,北京"(变量中有个中文逗号),将只在IE(包括IE9)中弹出信息框,Firefox/Safari/Chrome都将报错。
    测试发现中文顿号(、),分号(;),句号(。)等现象与逗号一样。因此想用中文命名变量时不能使用中文标点符号,因为这样不能兼容所有浏览器。

    虽然IE中不报错,但仍然属于IE bug。因为其没按标准去实现。见ECMA262 V5 的7.6,7,7节。

    谢谢 Franky  指正。

  • 相关阅读:
    不要再浪费时间阅读文献技巧本
    Reporting Services 中的分页方式Report Builder 3.0
    国外实时数据库比较
    转VS2010 C++下编译调试MongoDB源码 代震军
    C#中异步和多线程的区别
    Python seems amazing!
    嵌入式(armcc)自动调用函数
    MSSQL2008 日志文件收缩
    萝卜地...分享;
    Apache配置多个站点;
  • 原文地址:https://www.cnblogs.com/snandy/p/1967372.html
Copyright © 2020-2023  润新知