IE浏览器中js使用中文标识符的bug
今天在一个网站看到了作者使用中文命名。我们知道js中可以使用中文标识符,如变量,类名,参数名,方法名等。如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function 学生(姓名,年龄){ //类名:学生,参数:姓名,年龄 this .姓名=姓名; this .年龄=年龄; } 学生.prototype.获取姓名= function (){ //方法名:获取姓名 return this .姓名; } 学生.prototype.设置姓名= function (名字){ //方法名:设置姓名 this .姓名=名字; } var student1 = new 学生( "张三" ,18); alert(student1.获取姓名()); student1.设置姓名( "李四" ); alert(student1.获取姓名()); |
new了一个学生类的实例student1,然后调用相应的方法第一次弹出“张三”,修改后弹出“李四”。
但有个bug,如下:
1 2 | var 中国,北京=[ "海淀" , "朝阳" , "东城" , "西城" ]; alert(中国,北京); |
定义了一个变量"中国,北京"(变量中有个中文逗号),将只在IE(包括IE9)中弹出信息框,Firefox/Safari/Chrome都将报错。
测试发现中文顿号(、),分号(;),句号(。)等现象与逗号一样。因此想用中文命名变量时不能使用中文标点符号,因为这样不能兼容所有浏览器。
虽然IE中不报错,但仍然属于IE bug。因为其没按标准去实现。见ECMA262 V5 的7.6,7,7节。
谢谢 Franky 指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端