作为一名前端程序员,自然学习了一些框架,但是学的越多越发现自己基础的不足,于是想系统的学习一下js基础,然后把它记录下来。

  如其他编程语言一样,词法结构是一门语言的基础,它规定了诸如如何给变量起名字、如何写注释、如何断句等。

字符集

  JavaScript 所使用的是Unicode字符集编码。和HTML不同,JavaScript 是区分大小写的。也就是说变量、函数名、关键字和所有的标识符都必须使用一致的大小写形式。比如我们可以使用 var 来定义一个变量,而不能使用 VAR 或者 Var 来定义。JavaScript 解释器会忽略空格类字符(空格符、水平制表符、垂直制表符、换页符、不中断空白、字节序标记等)和换行类字符(换行符、回车符、行分隔符、段分隔符)。因此我们可以使用空格空行来格式化代码,提高代码可读性。

注释

  注释不是 JavaScript 代码的必要部分,但是注释不仅可以增加代码可读性,还方便程序测试。JavaScript 支持两种格式的注释。第一种是单行注释,由双斜杠构成,在一行中Javascript 解释器会忽略第一个“//”之后的文本,直到本行结束。第二种是多行注释 JavaScript 将忽略 “/*”至“*/” 之间的文本,但是多行注释是不支持嵌套的(也没有嵌套的意义)。

// 这里是单行注释
/*
* 这里是多行注释
*/

直接量

  直接量又叫做字面量,它是程序中直接可以使用的数据值。下面是一些直接量(字面量)的例子:

12 // 数字直接量(字面量)
'zhangsan' //字符串直接量(字面量)
true //布尔直接量(字面量)
/\b[1,6]/g //正则直接量(字面量)
{ a: 1, b: 2 } //对象直接量(字面量)
[ 1, 3, 5 ] //数组直接量(字面量)

标识符、关键字、保留字

  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    with    default    for    null    try

  同时 JavaScript 还保留了一些标识符。尽管这些标识符目前还不是关键字,但是在不久后可能成为关键字。这些标识符称作保留字,这样我们在编程时就要避免使用这些保留字,以免发生一些不必要的bug。

语句分隔符

  JavaScript 使用分号 ( ; )作为语句分隔符。但是这个( ; )不是必须的。当不写这个( ; )时,JavaScript 解释器试图将两条语句放在一起解释,当 js 发现无法解释通的时候,它就会在一行结尾添补分号。例如:

a = 5
b = 10
// js解释器先会解释成 a = 5 b = 10;发现无法解释通后会在末尾填不上分号,于是解释成下列语句:
a = 5;
b = 10; var x = y + z
( m + n ).toString()
// js解释器先会尝试把 z(m+n)当做是函数调用表达式,然后解释为:
var x = y + z ( m + n ) .toString();

  但是凡事都有例外,有两种情况 js 会出乎意料。第一种当使用return、continue、break关键字时,如果他们后面紧跟着换行,那么js解释器将不会尝试和下一行放在一起解释,而会直接添补分号;例如:

return
true
// js会将这两行语句解释成
return ;
true;
//而其本意应该是
return true;

  第二种情况遇到 ++、-- 这样的运算符,他们的特点是结合性从右向左,并且操作数是1,例如:

a
++
b

  看上面的代码,当 JavaScript 解释器解释道第二行 ++ 的时候会先解释其右面的语句,于是将 b 作为++的操作数,因为++的操作数为1,因此无法向前解释,于是将上面代码解释成:

a ;
++ b;

   JavaScript 的词法结构比较简单,并且现代的编辑器功能都比较出强大。在日常编程的时候很少出现错误,但是我们还是要注意这些基本问题。

  更多信息,点击个人空间访问。

javascript 词法结构小结的更多相关文章

  1. 第二章:Javascript词法结构

    编程语言的词法结构是一套基础性的规则,用来描述你如何编写这门语言.作为语法的基础,它规定了变量名是怎么样的,如何写注释,以及语句之间是如何区分的.本节用很短的篇幅来介绍javascript的词法结构. ...

  2. JavaScript权威设计--JavaScript词法结构(简要学习笔记二)

    1.字符集 JavaScript是用Unicode字符集编写的 2.区分大小写 html不区分大小写,xhtml区分大小写 如:html中onclick可以写成Onclick 但是js中必须写成onc ...

  3. 《JavaScript权威指南》第六版阅读笔记(二):JavaScript词法结构

    JavaScript使用Unicode字符集.ECMAScript3要求JS的实现必须支持Unicode 2.1及后续版本,ECMAScript 5要求JS的实现支持Unicode 3及后续版本. J ...

  4. 第一章javascript词法结构笔记摘要

    语法介绍 javascript最流行的脚本语言,用于web和HTML,服务器.pc.移动端 轻量级语言,可以插入HTML页面,由浏览器按编写顺序执行 一.字符集 用Unicode字符集编写,是ASCI ...

  5. javascript基础语法——词法结构

    × 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫 ...

  6. Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句

    第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...

  7. Note | javascript权威指南[第六版] 第2章:词法结构

      语法结构规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分隔等规则.本章用很短的篇幅来介绍JavaScript的词法结构.   2.1.字符集   JavaScript程序是用Unic ...

  8. 2.词法结构-JavaScript权威指南笔记

    今天是第二章.所谓词法结构(lexical structure),就是写代码中最基本的东西,变量命名,注释,语句分隔等,这是抄书抄的... 1.字符集,必须是Unicode,反正Unicode是ASC ...

  9. JavaScript语言核心之词法结构

    编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序.作为语法的基础,它规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分割的等规则. 1.1字符集 JavaScript ...

随机推荐

  1. Confluence 6 垃圾收集性能问题

    这个文章与 Oracle 的 Hotspot JVM 虚拟机的内存管理为参照的.这些建议是我们在对大的 Confluence 安装实例用户进行咨询服务的时候得到的最佳配置方案. 请不要在 Conflu ...

  2. 基于 Confluence 6 数据中心的 SAML 单点登录设置 SSL/TLS

    请确定 SAML 授权是安全和私有的,你需要在你的应用程序中设置SSL/TLS. 请参考in the application. See Running Confluence Over SSL or H ...

  3. mongo数据库的各种查询语句示例

    左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" ...

  4. mabatis的批量新增sql 初级的 初级的 初级的

    简单描述:做开发的时候,会遇到一次插入好多条记录,怎么做好呢? 解决思路:循环insert啊!  哪凉快那呆着去←!←  这样会增加数据库开销的,当然不能这么干了,要在sql上下功夫.看代码,一下就明 ...

  5. 【mysql】编码问题

    原始数据是unicode,存入数据库.需要注意的几个地方: 1.建立数据库时,选择编码方式为utf8 -- UTF-8 Unicode 2.代码中建立数据库连接时,选择charset=utf8 3.存 ...

  6. java----Java的栈,堆,代码,静态存储区的存储顺序和位置

    转载:https://blog.csdn.net/zhangbaoanhadoop/article/details/82193497

  7. 论文阅读笔记九:SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS (DeepLabv1)(CVPR2014)

    论文链接:https://arxiv.org/abs/1412.7062 摘要 该文将DCNN与概率模型结合进行语义分割,并指出DCNN的最后一层feature map不足以进行准确的语义分割,DCN ...

  8. 饮冰三年-人工智能-linux-01通过VM虚拟机安装contes系统

    先决条件:VM虚拟机的安装.contes系统的镜像文件 1:创建新的虚拟机 2:下一步,稍后安装操作系统 3:选择对应的系统 4:选择对应的路径 至此虚拟机已经创建完成(相当于买了一台新电脑) 5:编 ...

  9. 在 Python 中使用 JSON

    在 Python 中使用 JSON 本教程将会教我们如何使用 Python 编程语言编码和解码 JSON.让我们先来准备环境以便针对 JSON 进行 Python 编程. 环境 在我们使用 Pytho ...

  10. Just oj 2018 C语言程序设计竞赛(高级组)D: 四边形面积

    D: 四边形面积 时间限制: 1 s      内存限制: 128 MB      提交 我的状态 题目描述 有一个四边形,现在需要求它的面积 输入 输入四行,每行两个数整数xx, yy (1≤x,y ...