JS 基本的语法概念

🌙
手机阅读
本文目录结构

何语言的核心都必然会描述这门语言最基本的工作原理。

而描述的内容通常都要涉及这门语言的语法、操作符、数据类型、内置功能等用于构建复杂解决方案的基本概念。如前所述,

ECMA-262 通过叫做 ECMAScript 的“伪语言”为我们描述了 JavaScript 的所有这些基本概念。

目前,ECMA-262 第 5 版中定义的 ECMAScript 是各浏览器实现最多的一个版本。

ECMA-262 第 6 版虽然出来很久了,但是浏览器实现的只能说是版本,至于最新的 ES2020 就更实现的不行了

语法

ECMAScript 的语法大量借鉴了 C 及其他类 C 语言(如 Java 和 Perl)的语法。

因此,熟悉这些语言的开发人员在接受 ECMAScript 更加宽松的语法时,一定会有一种轻松自在的感觉。

区分大小写

要理解的第一个概念就是 ECMAScript 中的一切(变量、函数名和操作符)都区分大小写。

这也就意味着,变量名 test 和变量名 Test 分别表示两个不同的变量,而函数名不能使用 typeof ,因为它是一个关键字,但 typeOf 则完全可以是一个有效的函数名。

标识符

所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。标识符可以是按照下列格式规则

组合起来的一或多个字符:

  • 第一个字符必须是一个字母、下划线( _ )或一个美元符号( $ );
  • 其他字符可以是字母、下划线、美元符号或数字。

标识符中的字母也可以包含扩展的 ASCII 或 Unicode 字母字符(如 À和 Æ),但我们不推荐这样做。

按照惯例,ECMAScript 标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写,例如:

firstSecond
myCar
doSomethingImportant

虽然没有谁强制要求必须采用这种格式,但为了与 ECMAScript 内置的函数和对象命名格式保持一致,可以将其当作一种最佳实践。

不能把关键字、保留字、 true 、 false 和 null 用作标识符。

注释

ECMAScript 使用 C 风格的注释,包括单行注释和块级注释。

单行注释以两个斜杠开头,如下所示:

// 单行注释

块级注释以一个斜杠和一个星号( /* )开头,以一个星号和一个斜杠( */ )结尾,如下所示:

/*
 * 这是一个多行
 * (块级)注释
 */

虽然上面注释中的第二和第三行都以一个星号开头,但这不是必需的。

之所以添加那两个星号,纯粹是为了提高注释的可读性(这种格式在企业级应用中用得比较多)。

严格模式

ECMAScript 5 引入了严格模式(strict mode)的概念。

严格模式是为 JavaScript 定义了一种不同的解析与执行模型。在严格模式下,ECMAScript 3 中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。

要在整个脚本中启用严格模式,可以在顶部添加如下代码:

"use strict";

这行代码看起来像是字符串,而且也没有赋值给任何变量,但其实它是一个编译指示(pragma),用于告诉支持的 JavaScript 引擎切换到严格模式。

这是为不破坏 ECMAScript 3 语法而特意选定的语法。

在函数内部的上方包含这条编译指示,也可以指定函数在严格模式下执行:

function doSomething(){
    "use strict";
    //函数体
}

严格模式下,JavaScript 的执行结果会有很大不同,因此本书将会随时指出严格模式下的区别。

支持严格模式的浏览器包括 IE10+、Firefox 4+、Safari 5.1+、Opera 12+和 Chrome。

语句

ECMAScript 中的语句以一个分号结尾;如果省略分号,则由解析器确定语句的结尾,如下例所示:

var sum = a + b // 即使没有分号也是有效的语句——不推荐
var diff = a - b; // 有效的语句——推荐

虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它。因为加上这个分号可以避免很多错误(例如不完整的输入),

开发人员也可以放心地通过删除多余的空格来压缩 ECMAScript 代码(代码行结尾处没有分号会导致压缩错误)。

另外,加上分号也会在某些情况下增进代码的性能,因为这样解析器就不必再花时间推测应该在哪里插入分号了。

可以使用 C 风格的语法把多条语句组合到一个代码块中,即代码块以左花括号( { )开头,以右花 括号( } )结尾:

if (test){
    test = false;
    alert(test);
}

虽然条件控制语句(如 if 语句)只在执行多条语句的情况下才要求使用代码块,但最佳实践是始 终在控制语句中使用代码块——即使代码块中只有一条语句,例如:

if (test)
    alert(test); // 有效但容易出错,不要使用

if (test){ // 推荐使用
    alert(test);
}

在控制语句中使用代码块可以让编码意图更加清晰,而且也能降低修改代码时出错的几率。

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了