作为一名前端程序员,自然学习了一些框架,但是学的越多越发现自己基础的不足,于是想系统的学习一下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 使用 JConsole 监控远程 Confluence

    针对生产系统中,我们推荐你使用远程监控,这个将不会消耗你远程 Confluence 服务器的资源. 启动远程监控: 添加下面的属性到 setenv.sh / setenv.bat 文件中,端口你可以定 ...

  2. Selenium WebDriver中鼠标事件

    鼠标点击操作  鼠标点击事件有以下几种类型:  清单 1. 鼠标左键点击   Actions action = new Actions(driver);action.click();// 鼠标左键在当 ...

  3. Socket网络编程(一)

    1.什么是网络通讯?(udp.tcp.netty.mina) udp:漂流瓶,每个人都可以向大海里面扔漂流瓶,不管有没有人捡到.(不管接收方有没有,我只往指定的地址发送东西,64kb以内) tcp:电 ...

  4. select下拉框使用完毕后,重置按钮使其清空

    需求描述:select下拉框后边有两个按钮,一个查询,一个重置,点击重置,select会清空之前选择的那个查询条件 解决思路:卧槽,这不so easy 么,用那个jQ封装的trigger函数搞定啊,对 ...

  5. follow

    public function follow(Request $request, FeedModel $model, FeedRepository $repository) { if (is_null ...

  6. MVC开发中的常见错误-01未能加载文件或程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。

    错误信息:未能加载文件或程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或 ...

  7. 利用redis统计信息对CPU使用率进行收集

    http://dy.163.com/v2/article/detail/DQT2ROO10511RVML.html

  8. 解决h5网页微信分享链接不能显示缩略

    <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js& ...

  9. 【Android】Android 监听apk安装替换卸载广播

    [Android]Android 监听apk安装替换卸载广播 首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDE ...

  10. 详细的ifcfg-eth0配置详解

    通过查资料与工作中的进行一下总结: DEVICE="eth1"   网卡名称NM_CONTROLLED="yes" network mamager的参数 ,是否 ...