JavaScript权威指南(第6版) --- 自学笔记(1) --- JS词法结构

JS词法结构

字符集:
(1)js程序是用Unicode字符集编写的。
(2)区分大小写。也就是说,关键字,变量,函数名和所有标识符都必须采取一致的大小写形式。
         例如:关键字:"while"必须写为"while",其他写法:"While","WHILE"都无效。
                    变量名:"deleteFlg", "Deleteflag", "deleteflag", "DeleteFlag"是四个不同的变量名。
         需要注意的是:HTML并不区分大小写,但JS区分,这点不要混淆。
         许多客户端JS对象和属性与他们所表示的HTML标签和属性同名,在HTML中,这些标签和属性名可以使用大写,也可以使用小写,但在JS中则必须使用小写。

例如:onclick事件在HTML代码中,可以有多种写法,如下
         <input type="button" οnclick="alert(1);" value="onclick"/>
         <input type="button" onClick="alert(1);" value="onClick"/>
         js写法种就必须用小写
         document.getElementById("btn2").onclick = function() { alert(2); };  // 正确 onclick
         document.getElementById("btn2").onClick = function() { alert(2); };  // 错误 onClick

命名规则这部分,要以开发团队的命名规定为准。否则,代码的维护成本会增加。

(3)空格,换行符和格式控制符
         JS代码中通常使用空格符,换行符来编写出整齐的,一致缩进的代码,以提高代码的可读性。

         JS可以识别如下的空格符:
         普通空格符(\u0020)、水平制表符(\u0009)、垂直制表符(\u000b)、换页符(\u000c)、不中断空白(\u00a0)o、字节序标记(\ufeff)、以及在Unicode中所有Zs类别的字符。
          行结束符:
          换行符(\u000a)、回车符(\u000d)、行分隔符(\u2028)、段分隔符(\u2029)。
          回车符加换行符在一起被解析为一个单行结束符。

(4)Unicode转义序列
          JS使用6个ASCII字符来代表任意16位Uenicode内码,这些Uniicode转义序列均以'\u'为前缀,其后跟随4为十六进制数。
          这种Unicode转义写法可以用在js字符串直接量,正则表达式直接量,和标识符中(关键字除外)。

          例如:
                     console.log('caf\u00e9');                      // café
                     console.log('cafe\u0301');                    // café
                     console.log("café" == "caf\u00e9");     // true
                     console.log("café" == "cafe\u0301");   // false

(5)标准化
          Unicode允许使用多种方法对同一字符进行编码,例如,上面的"é"可以使用Unicode字符"\u00e9"表示,也可以使用cafe跟随一个语调符\u0301。在文本编辑中,两种编码('caf\u00e9' 和 'cafe\u0301')方式显示是一样的,但是计算机中二进制码表示是不一样的,在计算机中也不相等。

附带JS:

        /**
         * 字符转Unicode码 
         * @param str 需要进行转换的字符
         * @return 转换后的Unicode码
         */
        function toUnicode(str) {
            var unicodeStr = str.charCodeAt(0).toString(16);
            while(unicodeStr.length < 4) {
                unicodeStr = "0" + unicodeStr;
            }
            return "\\u" + unicodeStr;
        }

        /**
         * Unicode码转字符串
         * @param unicodeStr Unicode码
         * @return Unicode码对应的字符
         */
        function toChar(unicodeStr) {
            return unescape(unicodeStr.replace(/\u/g, "%u"));
        }

        // 一些测试
        console.log("半角英文空格的Unicode码:" + toUnicode(" "));
        console.log("水平制表符的Unicode码:" + toUnicode("\t"));
        console.log("垂直制表符的Unicode码:" + toUnicode("\v"));
        console.log("换页符的Unicode码:" + toUnicode("\f"));
        console.log("不中断空白的Unicode码:" + toUnicode(" "));
        console.log("-----------------------------------------");
        console.log("换行的Unicode码:" + toUnicode("\n"));
        console.log("回车的Unicode码:" + toUnicode("\r"));
        console.log("-----------------------------------------");
        console.log('caf\u00e9');            // café
        console.log('cafe\u0301');           // café
        console.log("café" == "caf\u00e9");  // true
        console.log("café" == "cafe\u0301"); // false

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值