2,javascript中命名变量的c语言标识符命名规则由哪四种字符构成?注意什么问题

随笔 - 445
评论 - 1868后使用快捷导航没有帐号?
只需一步,快速开始
查看: 4010|回复: 16
Javascript命名禁区[110407.updated]
UID323880在线时间 小时积分1686帖子离线17089 天注册时间
银牌会员, 积分 1686, 距离下一级还需 1314 积分
通常我们会在一些javascript的书籍上看到,使用Javascript保留字作为标识符(变量名、函数名、循环标记等)时,会引起程序报错!
但如果是有一定经验的前端开发人员,肯定知道在实际应用中,命名禁区不限于这些保留字!!!
没碰到过?那我们从一个例子开始!
在Firefox(测试: ff3.6)中运行如下代码:
var fullScreen = function(){
alert('run');
以函数声明的形式允许重置,有兴趣的朋友研究下
~function fullScreen(){alert('run')}();
ps.110402: 请一朋友测试ff4.0,函数表达式也允许重置reset了,但还是尽量别占用它
fullScreen();
&提示:您可以先修改部分代码再运行
在IE(测试: ie6,ie8)中运行如下代码:
&input id=&t& type=&button& value=&btn& /&
var elem = document.getElementById('t');
elem.start = function(){}
&提示:您可以先修改部分代码再运行
110407添加,引起 Chrome bug( Chrome下运行)
var status = [true,'hello',false,3,4];
alert(status);
alert(status[1]);
alert(typeof status);
~function(){
var status = [true,'hello',false,3,4];
alert(status[1]);
&提示:您可以先修改部分代码再运行
都不是我们预期的效果,有木有??
此类问题,报错还好,如果当时没有报错,而当项目上线后,在某些特定环境下,它才执行异常,这时候来查错才真的要人老命。
SO,我整理了一份“命名禁区”的文档,供自己查询,给大家参考,不必记住它,但至少得有个印象。
一、标识符允许的字符集。
在ECMAScript V3中,标识符除首字母外,允许使用除 (./=?:&#\{}()&&[]|~!’”\*^) 等特殊字符外所有的unicode字符集。
二、变量名、函数名、循环标记命名禁区。
break function return typeof case do if switch var catch else in this void continue false instanceof throw while debugger finally new true with default for null try
复制代码
2、未来保留字
abstract double goto native static boolean enum implements package super byte export import private synchronized char extends int& & & & protected throws class final interface public transient const float long short volatile
复制代码
3、扩展列表
as is namespace [color=DarkOrange]use[/color] arguments encodeURI Infinity Object String Array Error isFinite parseFloat SyntaxError Boolean escape isNaN parseInt TypeError Date eval Math RangeError undefined decodeURI EvalError NaN ReferenceError unescape decodeURIComponent Function Number RegExp URIError
复制代码
4、IE全局变量
status onresize onmessage parent onhashchange defaultStatus name history maxConnectionsPerServer opener location screenLeft document onbeforeprint screenTop clientInformation onerror onfocus event onload onblur window closed screen onscroll length frameElement self onunload onafterprint navigator frames sessionStorage top clipboardData external onhelp offscreenBuffering localStorage onbeforeunload
复制代码
5、FF全局变量
getInterface addEventListener loadFirebugConsole console window cehomepage document netscape XPCSafeJSObjectWrapper XPCNativeWrapper Components sessionStorage globalStorage getComputedStyle dispatchEvent removeEventListener name parent top dump getSelection scrollByLines scrollbars scrollX scrollY scrollTo scrollBy scrollByPages sizeToContent setTimeout setInterval clearTimeout clearInterval setResizable captureEvents releaseEvents routeEvent enableExternalCapture disableExternalCapture open openDialog frames applicationCache self navigator screen history content menubar toolbar locationbar personalbar statusbar directories closed crypto pkcs11 controllers opener status defaultStatus location innerWidth innerHeight outerWidth outerHeight screenX screenY mozInnerScreenX mozInnerScreenY pageXOffset pageYOffset scrollMaxX scrollMaxY length fullScreen alert confirm prompt focus blur back forward home stop print moveTo moveBy resizeTo resizeBy scroll close updateCommands find atob btoa frameElement showModalDialog postMessage localStorage
复制代码
4、5这是最容易被忽视的部分,有的变量允许你重新设置,但最好不要随意去占用它,除非你非常清楚你在干什么,及可能造成的后果
三、属性方法命名禁区。
break delete function return typeof case do if switch var catch else in this void continue false instanceof throw while debugger finally new true with default for null try
复制代码
2、未来保留字
super export import extends const class
复制代码
* 这里主要针对字面量对象{},eg:
var testObj = {class: 3}; //ie将报错
var testObj = {}; testObj['class'] = 3 //则不会
复制代码
原文地址:
[[i] 本帖最后由 CNwander 于
22:04 编辑 ]
UID169474在线时间 小时积分1914帖子离线17089 天注册时间
银牌会员, 积分 1914, 距离下一级还需 1086 积分
辛苦了,老早就想整理一下,但一直没付之行动,呵呵,就拿LZ这个现成的了。
UID323880在线时间 小时积分1686帖子离线17089 天注册时间
银牌会员, 积分 1686, 距离下一级还需 1314 积分
回复 2# zxbmt
嗯,谢谢支持,现在很少有人关注这类问题了
我也是自己多次碰到了这个问题后才下决心整理出来
UID537184在线时间 小时积分219帖子离线17089 天注册时间
中级会员, 积分 219, 距离下一级还需 281 积分
这类问题很少碰到,但是碰到了就会让人很郁闷!
UID507452在线时间 小时积分430帖子离线17089 天注册时间
中级会员, 积分 430, 距离下一级还需 70 积分
我估计每个人曾经都不经意之间写过 document.getElementById('test').class = 'className'
UID510141在线时间 小时积分419帖子离线17089 天注册时间
中级会员, 积分 419, 距离下一级还需 81 积分
这个平时没怎么注意,
UID563052在线时间 小时积分227帖子离线17089 天注册时间
中级会员, 积分 227, 距离下一级还需 273 积分
我们项目组没有这种现象。
因为我为前端定下的编程规范中要求:所有的变量与方法必须由类包装。
这样就杜绝了全局变量或函数的存在(任何一个变量都至少有一个类名作为其Namespace),几乎没人遇到此类现象。
UID344431在线时间 小时积分2349帖子离线17089 天注册时间
银牌会员, 积分 2349, 距离下一级还需 651 积分
很好很强大。谢谢楼主。如果变量都加上自己的标识,应该可以避免这种问题。
[[i] 本帖最后由 chensulong 于
11:11 编辑 ]
UID346713在线时间 小时积分1973帖子离线17089 天注册时间
银牌会员, 积分 1973, 距离下一级还需 1027 积分
好文章. 有劳楼主了。
UID19636在线时间 小时积分3828帖子离线17089 天注册时间
金牌会员, 积分 3828, 距离下一级还需 1172 积分
一、标识符允许的字符集。
在ECMAScript V3中,标识符除首字母外,允许使用除 (./=?:&#\{}()&&[]|~!’”\*^) 等特殊字符外所有的unicode字符集。
UID323880在线时间 小时积分1686帖子离线17089 天注册时间
银牌会员, 积分 1686, 距离下一级还需 1314 积分
原帖由 [i]tangbin1987 于
17:17 发表
我估计每个人曾经都不经意之间写过 document.getElementById('test').class = 'className'
我不止一次曾犯下这个错误
原帖由 [i]fengchun77415 于
10:44 发表
我们项目组没有这种现象。
因为我为前端定下的编程规范中要求:所有的变量与方法必须由类包装。
这样就杜绝了全局变量或函数的存在(任何一个变量都至少有一个类名作为其Namespace),几乎没人遇到此类现象。
嗯,再加上 自运行匿名函数 和 元素数据缓存机制 这种命名上的冲突基本上可以避免
UID323880在线时间 小时积分1686帖子离线17089 天注册时间
银牌会员, 积分 1686, 距离下一级还需 1314 积分
记得以前flash区有一个 火山,全部用中文命名,看得我头那个头晕啊
js区好像还没碰到过
UID571604在线时间 小时积分141帖子离线17089 天注册时间
初级会员, 积分 141, 距离下一级还需 59 积分
好文章&&辛苦楼主了。新手特来拜访
UID559248在线时间 小时积分1451帖子离线17089 天注册时间
银牌会员, 积分 1451, 距离下一级还需 1549 积分
收藏了,这个必须要顶
UID323880在线时间 小时积分1686帖子离线17089 天注册时间
银牌会员, 积分 1686, 距离下一级还需 1314 积分
引起 Chrome bug( Chrome下运行)
var status = [true,'hello',false,3,4];
alert(status[1]);
alert(typeof status);
~function(){
var status = [true,'hello',false,3,4];
alert(status[1]);
&提示:您可以先修改部分代码再运行
[[i] 本帖最后由 CNwander 于
22:00 编辑 ]
UID294856在线时间 小时积分3391帖子离线17089 天注册时间
金牌会员, 积分 3391, 距离下一级还需 1609 积分
谢谢整理,小弟现在正在努力学习JS中
UID536289在线时间 小时积分3526帖子离线17089 天注册时间
金牌会员, 积分 3526, 距离下一级还需 1474 积分
楼主的文章挺不错的,现在在学习中挺有帮助的
Powered by18 / 19 页
02 标识符基础知识
主题帖子积分
注册会员, 积分 194, 距离下一级还需 6 积分
注册会员, 积分 194, 距离下一级还需 6 积分
9china 第一位不能为数字
c-e 标示符不能存在-
f+j 标示符不能存在+
k#i标示符不能存在#
开头字母必须是字母,下划线,$任意一个
剩下的可以是任意的字母,下划线,$,数字。
命名不要使用系统的关键字来命名
一般是驼峰法,开头的单词首字母小写,之后再有单词首字母大写。如果是对象的话首字母建议大写
getNameById
getDataBase
主题帖子积分
中级会员, 积分 292, 距离下一级还需 208 积分
中级会员, 积分 292, 距离下一级还需 208 积分
&!doctype html&
&meta charset=&utf-8&/&
&title&网页的制作&/title&
&pre/&&&//这就是预格式化化标签
&script type=&text/javascript&&
//1、请找出下面错误的标识符
&&// 9china& &//这个不能是数字开头的,变量的命名规则只能是,字母、数字、下划线、$的组合,但是数字不能开头
& &c-e& & //这个也是错的,用的是横线,不是下划线
&&f+J& & //这个也是错的,有加号也是不行的
//& &K#i& & //这个也是错的,#好也是不行的
//2、请写出JS中标识符的命名规则
//在JS中是严格区分大小写的,变量的命名规则只能是,字母、数字、下划线、$的组合,但是数字不能开头
//3、请叙述标识符的书写规范并写出10个范例
i_love_you& && && && &
iLoveYouToo
_$iLoveYou
BD_newyear
主题帖子积分
中级会员, 积分 398, 距离下一级还需 102 积分
中级会员, 积分 398, 距离下一级还需 102 积分
&!DOCTYPE html&
&html&
&head&
& && &&&&meta charset=&utf-8& /&
& && &&&&title&第一课JS变量与数据类型-02标识符基础知识&/title&
& && &&&&script type=&text/javascript& src=&js/dom.js&&&/script&
&/head&
&body&
& && &&&&!--
& && && && && & 1、请找出下面错误的标识符
& && && && && & $a&&正确,可以用$开头
& && && && && & a_H& && &&&正确,可以用英文字母开头
& && && && && & A_X& && &&&正确,可以用英文字母开头
& && && && && & 9china 错误,只能以字母、下划线或$符开头,数字不能开头
& && && && && & c-e 错误,中间的字母可以是任意字母、下划线、$符和数字,但不能是小横杠-
& && && && && & f+j 错误,中间的字母可以是任意字母、下划线、$符和数字,但不能是加号+
& && && && && & k#j 错误,中间的字母可以是任意字母、下划线、$符和数字,但不能是井号#
& && && && && & 所以错误的标识符为9china、c-e、f+j、k#j。
& && && && && & 2、请写出JS中标识符的命名规则
& && && && && & 标识符是个代表符号 一般是指:变量、函数、属性名、函数的参数。
& && && && && & 标识符必须按照以下格式规则
& && && && && & 第一位必须是一个:字母/下划线_/$
& && && && && & 其他字符可以是任意多个:字母/下划线/$/数字& && &&&的任意组合。
& && && && && & 理论上:扩展的ASCII或Unicode字母也是可以的但是这些字符很奇怪不推荐使用
& && && && && & 3、请叙述标识符的书写规范并写出10个范例
& && && && && & 标识符书写规范
& && && && && && && && &驼峰式写法:
& && && && && && && && && && &&&第一个单词小写其他单词第一个字母大写(推荐的)
& && && && && && && && && && &&&例如: myNameIsZhao
& && && && && && && && &版权+驼峰式写法:
& && && && && && && && && && &&&DLmyName& && && &DL是动力学院版权代号
& && && && && && && && &下划线式写法:
& && && && && && && && && && &&&每个字符都统一小写,不同单词直接用下划线隔开。
& && && && && && && && && && &&&例如:my_name_is_zhao
& && && && && && && && &匈牙利标记法:
& && && && && && && && && && &&&就是在标识前加上变量类型的前缀
& && && && && && && && && && &&&例如:aArray、bTrue、fFloat、fnFunction函数
& && && && && & 说明:无论采用哪种写法,应该保持整个项目始终如一。
& && && && && & 十个范例如下:
& && && && && & 1、myNameIsZhao
& && && && && & 2、DLmyName
& && && && && & 3、_DLmyName
& && && && && & 4、$myNameIsZhao
& && && && && & 5、$_myNameIsZhao
& && && && && & 6、_$myNameIsZhao
& && && && && & 7、my_name_is_zhao
& && && && && & 8、$myNameIsZhao
& && && && && & 9、fnFunction
& && && && && & 10、$fnFunction/_fnFunction
& && &&&--&
&/body&
&/html&
复制代码
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
中级会员, 积分 298, 距离下一级还需 202 积分
中级会员, 积分 298, 距离下一级还需 202 积分
书写错误:
规则:标示符是由数字,字母,下划线,,$组成;
& && && &标示符第一个必须是字母,也可以是下划线开头,但是不能以数字开头
& && && &标示符中区分大小写。
命名:$name&&_no userName xl_top xl_userPass Name top_silde new_top
主题帖子积分
中级会员, 积分 246, 距离下一级还需 254 积分
中级会员, 积分 246, 距离下一级还需 254 积分
/**********************************************************
1、请找出下面错误的标识符
& &$a& &&&对的
& &a_H& & 对的
& &A_X& & 对的
& &9china 不能以数字开头
& &c-e& & 不能含有-特殊字符
& &f+J& & 不能含有+特殊字符
& &K#i& & 不能含有#特殊字符
2、请写出JS中标识符的命名规则
& &下划线或者字母开头
3、请叙述标识符的书写规范并写出10个范例
&&标准大众书写规范:驼峰式/版权+驼峰式/下划线式/匈牙利式
& &a& &$a& &a234&&A123&&az& &_asd123&&myName& &my_name& & $asd& &myNameIs
***********************************************************/
主题帖子积分
注册会员, 积分 134, 距离下一级还需 66 积分
注册会员, 积分 134, 距离下一级还需 66 积分
1、错误的标识符:9china;c-e;f+J;K#i。
2、标识符的命名规则:第一位必须是字母/下划线_/$;其他字符可以是字母/下划线/$/数字的任意组合。
3、标识符的书写规范:(1)驼峰式写法:第一个单词小写其他单词第一个字母大写;(2)版权+驼峰式写法;(3)下划线式写法:每个字符都统一小写,不同单词直接用下划线隔开;(4)匈牙利标记法:就是在标识符前面加上变量类型的前缀。说明:无论采取哪种写法,应该保持整个项目始终如一。
& &&&10个范例:myNameIsZhao;DLmyName;my_name_is_zhang;aArray;bTrue;fFloat;fnFunction;productList;the_thing;JXInfoDetail。
主题帖子积分
注册会员, 积分 178, 距离下一级还需 22 积分
注册会员, 积分 178, 距离下一级还需 22 积分
命名规则:1.第一个必须是字母、$、_、ASCII码
& && && && && &2.剩下的可以用字母、$、_、ASCII码
& && &&&1.&&DLedu
& && &&&2.&&dlEdu
& && &&&3.&&_DLedu
& && &&&4.&&_dlEdu
& && &&&5.&&$DLedu
& && &&&6.&&$dlEdu
& && &&&7.&&_$DLedu
& && &&&8.&&$_DLedu
& && &&&9.&&$$DL_edu
& && &&&1-. __DL$edu
主题帖子积分
注册会员, 积分 82, 距离下一级还需 118 积分
注册会员, 积分 82, 距离下一级还需 118 积分
9china //第一个字符不能以数字开头
c-e //标示符中不能有特殊字符夹杂在其中
f+J //标示符中不能有特殊字符夹杂在其中
K#i //标示符中不能有特殊字符夹杂在其中
命名规则:标示符是由数字,字母,下划线,,$组成;
& && && &标示符第一个必须是字母,也可以是下划线开头,但是不能以数字开头
& && && &标示符中区分大小写,是两个不同的标示符
zhangLi&&_zhangLi&&$zhangLi&&
主题帖子积分
注册会员, 积分 122, 距离下一级还需 78 积分
注册会员, 积分 122, 距离下一级还需 78 积分
9china //第一个字符不能以数字开头
c-e //标示符中不能有特殊字符夹杂在其中
f+J //标示符中不能有特殊字符夹杂在其中
K#i //标示符中不能有特殊字符夹杂在其中
命名规则:标示符是由数字,字母,下划线,,$组成;
& && && &标示符第一个必须是字母,也可以是下划线开头,但是不能以数字开头
& && && &标示符中区分大小写,是两个不同的标示符
& && && &1. o1
& && && &2. O1
& && && &3. $sool
& && && &4. _sool
& && && &5. sool_a
& && && &6. aArray
& && && &7. $aArray
& && && &8. $Sool
& && && &9. oDiv2
& && && &10. oDiv_2
主题帖子积分
中级会员, 积分 220, 距离下一级还需 280 积分
中级会员, 积分 220, 距离下一级还需 280 积分
第一位必须为字母/下划线/$
其后为任意字母/数字/下划线/$组成& &
18 / 19 页JavaScript是前端开发常用技术之一,虽说是前端开发常用技术,但很多时候,后台编程也会用到。在Javascript开发中,大家常常用到语言标识符和保留字,但往往不易区分,下面小编就和大家分享分享JavaScript语言标识符和保留字到底有哪些。
  一、标识符
  标识符就是给变量、函数和对象等指定的名字。构成标识符的字母是有一定的规范。
  1、JavaScript语言中标识符的命名规则:
  ①区分大小写,Myname与myname是两个不同的标识符。
  ②标识符首字符可以是以下划线(_)、美元符($)或者字母开始,不能是数字。
  ③标识符中其它字符可以是下划线(_)、美元符($)、字母或数字组成的。
  例: userName,User_Name,_sys_val,身高,$change等均为合法的标识符,而2mail,room#,class为非法的标识符。其中,使用中文“身高”命名的变量是合法的。
  注意:JavaScript中的字母是采用Unicode,Unicode叫做统一编码制,是国际上通用的16位编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符。所有JavaScript中的字母可以是中文、日文和韩文等亚洲字母。
  二、保留字
  保留字是语言中定义具有特殊含义的标识符,保留字不能作为标识符使用。JavaScript语言中定义了一些具有专门的意义和用途的保留字,这些保留字称为关键字。
  JavaScript语言中的关键字:
  break、delete、function、return、typeof、case、do、if、switch、var、catch、else、in、this、void、continue、false、instanceof、throw、while、debugger、finally、new、true、const、with、default、for、null和try。
  还有一些保留字在未来JavaScript版本使用的,它们主要有:
class、enum、export、extends、import和super。
以上就是JavaScript中标识符的命名规则总结及保留字归纳,希望对学习JavaScript的朋友有帮助。
推荐学习:
本文目前还没有评论……JavaScript标识符命名规则总结和保留字归纳 - 推酷
JavaScript标识符命名规则总结和保留字归纳
JavaScript是前端开发常用技术之一,虽说是前端开发常用技术,但很多时候,后台编程也会用到。在Javascript开发中,大家常常用到语言标识符和保留字,但往往不易区分,下面小编就和大家分享分享JavaScript语言标识符和保留字到底有哪些。
一、标识符
标识符就是给变量、函数和对象等指定的名字。构成标识符的字母是有一定的规范。
1、JavaScript语言中标识符的命名规则:
①区分大小写,Myname与myname是两个不同的标识符。
②标识符首字符可以是以下划线(_)、美元符($)或者字母开始,不能是数字。
③标识符中其它字符可以是下划线(_)、美元符($)、字母或数字组成的。
例: userName,User_Name,_sys_val,身高,$change等均为合法的标识符,而2mail,room#,class为非法的标识符。其中,使用中文“身高”命名的变量是合法的。
注意:JavaScript中的字母是采用Unicode,Unicode叫做统一编码制,是国际上通用的16位编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符。所有JavaScript中的字母可以是中文、日文和韩文等亚洲字母。
二、保留字
保留字是语言中定义具有特殊含义的标识符,保留字不能作为标识符使用。JavaScript语言中定义了一些具有专门的意义和用途的保留字,这些保留字称为关键字。
JavaScript语言中的关键字:
break、delete、function、return、typeof、case、do、if、switch、var、catch、else、in、this、void、continue、false、instanceof、throw、while、debugger、finally、new、true、const、with、default、for、null和try。
还有一些保留字在未来JavaScript版本使用的,它们主要有:
class、enum、export、extends、import和super。
以上就是JavaScript中标识符的命名规则总结及保留字归纳,希望对学习JavaScript的朋友有帮助。
推荐学习:
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 用户标识符的命名规则 的文章

 

随机推荐