JavaScript基础(1)—— 词法结构

  在了解JavaScript的词法结构之前,需要对“词法结构”这个术语有个了解,什么是词法结构?

  词法结构是指编程语言的一套基础性规则,用来描述你如何使用这门语言。如你需要如何定义一个变量,变量的变量名是怎样的?是否区分大小写?哪些变量名已经是系统关键字不能被使用?还包括如何写注释,程序语句间的缩进和分割规则等等等等。不管你是否了解词法结构的概念,它已经潜移默化的改变了你的编程思维。本章会以极短的篇幅来概括JavaScript中的词法结构。

  FBI warning:由于是写文章,我会选择部分值得记忆的东西进行讲解,不然这本书1000多页,加上自己的一些看法写完都可以出书了。

1.区分大小写

  JavaScript是区分大小写的语言,因此关键字,变量,函数名以及所有的标识符都应当采用统一的大小写形式,比如while关键字,必须写成“while”,如果你写成“While”或"WHILE",系统将无法识别这是个关键字。同理可得,"hello","HELLO","Hello"是三个不同的变量。

  如果单独看JavaScript区分大小写我们可能不会记错,但需要注意的是,HTML中并不区分大小写,在原生写法中,我们会在HTML中使用onclick属性给标签添加事件,由于HTML不区分大小写,因此你写成onClick也可以成功绑定事件,但在JavaScript代码中,我们只能使用小写的onclick来个dom节点添加事件,因此我们最好统一HTML和JavaScript中的大小写,以免造成不必要的麻烦。

2.标识符

   标识符就是一个名字(名称)。在JavaScript中,标识符用来对变量和函数进行命名,JavaScript的标识符必须以字母,下划线(_)或美元符($)开头,后续的字符可以是字母,下划线,美元符或数字,注意标识符不能以数字开头且标识符不得占用保留符,下面是一些合法的标识符。

a1 //以字母开头,后续是数字,合法
$a //以$开头,后续是字母,合法
_a //以_开头,后续是字母,合法

 3.JavaScript中的保留字

  JavaScript会把一些标识符拿出来当作自己的关键字,同时也会保留一部分还没有实际意义但将来可能会用到的关键字,这两部分关键字合起来统称保留字,注意我们在定义标识符的时候必须要避开这些保留字,否则系统就会报语法错误,如下图所示。

  JavaScript所有的保留字:点击前往链接地址,方便查阅。

4.JavaScript中的自动填补分号

  JavaScript使用分号(;)将语句分割开,搭配换行符增强代码的可读性和整洁下,事实上在很多地方分号都是可以被省略的,当然在刚入门JavaScript的阶段建议使用分号来明确标记语句的结束,即使在并不完全需要分号的时候。

  下面我们来考虑如下代码,因为两条语句分两行书写,第一个分号是可以省略掉的:

  a=3;

  b=4;

  如果按照下列格式书写,第一个分号就不能省略掉,如果要省略,需要用逗号(,)进行分割:

  a=3 ; b=4;

  除了手动添加分号,JavaScript还能在缺少分号无法正常解析代码的时候帮我们自动填补分号,无法正常解析代码指的是当前语句和随后的非空格字符不能当作一个整体来解析,注意这里并不会跳过中间的空格和换行符。下面我们来看几个作死的场景。

  var a
  a
  =
  3
  console.log(a)

 JavaScript将其解析为

var a;
a = 3;
console.log(a);

  JavaScript将第一处换行处添加了分号,因为没有分号,JavaScript无法解析var a空格a,但编辑器可以解析 a = 3,因此第二行的a 和 = 和数字3之间就没有添加分号,因为合并之后可以正常解析。

  下面我们来看看JavaScript的自动分割规则导致的一些意想不到的场景。

var y=x+fn
(a+b).toString()

  我们的本意是进行两步操作,但由于没有写分号,JavaScript将上面的代码解析成如下格式

var y = x + fn(a+b).toString()

  第二行和第一行被解析成了一个函数调用,因此在某些情况下,我们需要注意是否需要加分号进行代码分隔。

  最后我们来看一个特殊场景,由于"++","--"运算既能作为表达式前缀也能作为表达式后缀,那么在遇到如下情况的时候JavaScript是如何解析的呢?

x
++
y

  这段代码将解析为x;++y;

你可能感兴趣的:(javaScript)