作为一名前端程序员,自然学习了一些框架,但是学的越多越发现自己基础的不足,于是想系统的学习一下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. Spark Streaming 实现思路与模块概述

    一.基于 Spark 做 Spark Streaming 的思路 Spark Streaming 与 Spark Core 的关系可以用下面的经典部件图来表述: 在本节,我们先探讨一下基于 Spark ...

  2. SpringCloud注册中心(Eureka)

    注册中心的作用就是用来方便接口暴露出来的一个管理工具,如果所有的接口只是暴露出来,没有一个同一的管理工具,又有谁知道你暴露了哪些接口了,Eureka是一个springcloud的服务注册和发现模块 搭 ...

  3. bzoj1977次小生成树(重要)

    #include<cstdio> #include<iostream> #include<cstring> #include<queue> #inclu ...

  4. 简单(基本)的风光摄影照片后期处理-新手教程-ps照片后期基本处理

    前言 Photoshop虽然不是万能的,但缺少Photoshop却是万万不能的!风光摄影不是一个记录过程,做到的不能仅仅是“拍到了”,我觉得应该是一个创作的过程,特别是在后期处理的过程中,创作意味更浓 ...

  5. scss文件使用笔记

    1.编写兼容性代码 例如透明度,兼容IE @mixin mOpacity($o){ opacity:$o/100; filter:alpha(opacity=$o); } //引用 .box{ @in ...

  6. 论文阅读笔记十:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs (DeepLabv2)(CVPR2016)

    论文链接:https://arxiv.org/pdf/1606.00915.pdf 摘要 该文主要对基于深度学习的分割任务做了三个贡献,(1)使用空洞卷积来进行上采样来进行密集的预测任务.空洞卷积可以 ...

  7. IDEA中tomcat的部署

    创建一个项目就要部署tomcat

  8. ***在Linux环境下mysql的root密码忘记解决方法(三种)-推荐第三种

    MySQL密码的恢复方法之一 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态 ...

  9. Git强制拉取覆盖本地

    1.多条执行 git fetch --all git reset --hard origin/master git pull 2.单条执行 git fetch --all && git ...

  10. 647. Palindromic Substrings

    Given a string, your task is to count how many palindromic substrings in this string. The substrings ...