阮一峰 JavaScript 教程任何一个问题,JavaScript 都有多种解决方法。阅读本书的过程 中,你会诧异于 JavaScript 语法的灵活性。 JavaScript 的核心语法部分相当精简,只包括两个部分:基本的语 法构造(比如操作符、控制结构、语句)和标准库(就是一系列具有各 种功能的对象比如 Array 、 Date 、 Math 等)。除此之外,各种宿 主环境提供额外的 API(即只能在该环境使用的接口),以便 JavaScript CN) 构建 基本语法 JavaScript 的基本语法 语句 变量 概念 变量提升 标识符 注释 区块 条件语句 if 结构 if…else 结构 switch 结构 三元运算符 ?: 循环语句 while 循环 for 循环 do…while 循环 break 语句和 continue 语句 标签(label) 参考链接 JavaScript 程序的 程序的执行单位为行(line),也就是一行一行地执 JavaScript 的基本语法 语句 基本语法 - 32 - 本文档使用 书栈(BookStack.CN) 构建 行。一般情况下,每一行就是一个语句。 语句(statement)是为了完成某种任务而进行的操作,比如下面就 是一行赋值语句。 1. var a = 1 + 3; 这条语句先用 var 命令,声明了变量 a ,然后将 1 + 3 的运算结果0 码力 | 540 页 | 3.32 MB | 10 月前3
ECMAScript规范 第三版 中文版标准的第二版以保持它与 ISO/IEC16262 的完全协调。第一版和第二版之间存在着性质上的重大 变化。 目前的文档定义了该标准的第三版,这包含了强大的正则表达式,更优秀的字符串处理, 新的流程控制语句,try/catch 异常处理,更严密的出错定义,数字式输出格式以及一些次要变 更,为即将到来的国际化语言设施和语言未来发展的作提前准备。 关于这个语言的工作并没有结束。技术委员会正在致力于作出意义重大的优化,这包括脚 号的数量指出产生式所属的文法)。非终结符中一个或多个可变的右式紧跟在下一行。例 如,文法语法的定义: With 语句 : with ( 表达 式 ) 语句 这说明非终结符 With 语句表示 with 托肯,后跟一个左括号托肯,再跟随一个表达式,其 后是一个右括号托肯,再后面是一个语句。 出现的表达式和语句它们自身都是非终结符。作为 另一个例子,有文法定义: 参数列表 : 赋值表达式 参数列表 标识符 初始化器 再如: 迭代语句 : for ( 入口表 达 式 opt ; 表 达式 opt ; 表 达式 opt) 语 句 是下述产生式的简略形式: 迭代语句 : for ( ; 表达式 opt ; 表达式 opt) for ( 入口表 达式 ; 表达式 opt ; 表达式 opt) 语句 它是由下面的产生式的简略形式转变得到的: 迭代语句 : for ( ; ; 表达式0 码力 | 58 页 | 563.06 KB | 1 年前3
阮一峰 《ECMAScript 6入门》 第三版不在同一个作用域,有各自单独的作用域。 不存在变量提升 var 命令会发生”变量提升“现象,即变量可以在声明之前使用,值 为 undefined 。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在 声明语句之后才可以使用。 为了纠正这种现象, let 命令改变了语法行为,它所声明的变量一定要在声明后 使用,否则报错。 // var 的情况 console.log(foo); // 输出undefined 上面代码报错,也是因为暂时性死区。使用 let 声明变量时,只要变量在还没有 声明完成前使用,就会报错。上面这行就属于这个情况,在变量 x 的声明语句还 没有执行完成前,就去取 x 的值,导致报错”x 未定义“。 ES6 规定暂时性死区和 let 、 const 语句不出现变量提升,主要是为了减少运 行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的 错误在 ES5 是很常 但是,浏览器没有遵守这个规定,为了兼容以前的旧代码,还是支持在块级作用域 之中声明函数,因此上面两种情况实际都能运行,不会报错。 ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。ES6 规定,块级作 用域之中,函数声明语句的行为类似于 let ,在块级作用域之外不可引用。 function f() { console.log('I am outside!'); } (function () { if (false)0 码力 | 679 页 | 2.66 MB | 1 年前3
廖雪峰JavaScript教程JavaScript的语法和Java语言类似,每个语句以 ; 结束,语句块用 {…} 。但是,JavaScript 并不强制要求在每个语句的结尾加 ; ,浏览器中负责执行JavaScript代码的引擎会自动在每个语句 的结尾补上 ; 。 注意:让JavaScript引擎自动加分号在某些情况下会改变程序的语义,导致运行结果与期望不一致。 在本教程中,我们不会省略 ; ,所有语句都会添加 ; 。 例如,下面的一行代码就是一个完整的赋值语句: 例如,下面的一行代码就是一个完整的赋值语句: 1. var x = 1; 下面的一行代码是一个字符串,但仍然可以视为一个完整的语句: 1. 'Hello, world'; 下面的一行代码包含两个语句,每个语句用 ; 表示语句结束: 1. var x = 1; var y = 2; // 不建议一行写多个语句! 语句块是一组语句的集合,例如,下面的代码先做了一个判断,如果判断成立,将执行 {…} {…} 中的所有 语句: 1. if (2 > 1) { 2. x = 1; 3. y = 2; 4. z = 3; 5. } 注意花括号 {…} 内的语句具有缩进,通常是4个空格。缩进不是JavaScript语法要求必须的,但缩 进有助于我们理解代码的层次,所以编写代码时要遵守缩进规则。很多文本编辑器具有“自动缩进”的功 能,可以帮助整理代码。 {…}0 码力 | 264 页 | 2.81 MB | 10 月前3
TypeScript Handbook(中文版)
字段的对象。 在TypeScript里,只在两个类型内部的 结构兼容那么这两个类型就是兼容的。 这就允许我们在实现接口时候只要保证包含 了接口要求的结构就可以,而不必明确地使用 implements 语句。 interface Person { firstName: string; lastName: string; } function greeter(person: Person) 包含的工具(Webpack和一些加载器)允许我们导入样式表 文件。 当我们构建应用的时候,所有导入的 .css 文件会被拼接成一个输出文 件。 因此在 src/components/Hello.tsx ,我们需要添加如下导入语句。 import './Hello.css'; 使用Jest编写测试 我们对 Hello 组件有一些假设。 让我们在此重申一下: 当这样写语句。 TypeScript Handbook(中文版) 82 React import Hello from '../components/Hello'; import * as actions 0 码力 | 557 页 | 7.48 MB | 1 年前3
TypeScript 4.0 使用手册
字段的对 象。 在TypeScript里,只要两个类型内部的结构兼容那么这两个类型就是兼容的。 这就允许我们在 实现接口时候只要保证包含了接口要求的结构就可以,而不必明确地使用 implements 语句。 1. interface Person { 2. firstName: string; 3. lastName: string; 4. } 5. 6. function 包含的工具(Webpack和一些加载器)允许我们导入样式表文件。 当我们构建 应用的时候,所有导入的 .css 文件会被拼接成一个输出文件。 因此 在 src/components/Hello.tsx ,我们需要添加如下导入语句。 1. import './Hello.css'; 如果你没使用过Jest,你可能先要把它安装为开发依赖项。 1. npm install -D jest jest-cli jest-config 时调用。 试一试以便掌握编写测试的窍门。 现在我们的组件更新好了,可以把它放在一个容器里了。 让我们来创建一个文 件 src/containers/Hello.tsx ,在开始的地方使用下列导入语句。 1. import Hello from '../components/Hello'; 2. import * as actions from '../actions/'; 3. import0 码力 | 683 页 | 6.27 MB | 1 年前3
[试读]15天学会JavaScript - 第 2 章
ECMAScript语法基础 ECMAScript 语句 相信读者在学习人生中的第一门编程语言(比如 C 语言、Java 语言等)时,最先要明确 的就是程序语句。学校为什么会将诸如 C 或 Java 这类的语言作为基础性编程语言呢?其中有 一条原因是非常重要的,这类语言对于语法语句都有严格的规定,这样便于初学者对编程语言 的语法语句有深刻的理解。 那么 JavaScript 脚本语言的语句规则是如何定义的呢?通常,一条 脚本语言的语句规则是如何定义的呢?通常,一条 JavaScript 语句用于描 述一个完整的变量定义或功能操作,且每一条 JavaScript 语句都要以分号(;)来结束,分号(;) 用来分割各条 JavaScript 语句。 使用分号(;)分割 JavaScript 语句的一个好处就是可以在一行中编写多条 JavaScript 语句, 21 第 2 章 ECMAScript 语法基础 这一点与某些编程语言是有明显区别的。 源码发现有不带分号(;)的 JavaScript 语句时,也 不必大惊小怪。这是因为在 ECMA-262 规范中,规定了可以不必使用分号(;)来结束 JavaScript 语句。如果没有使用分号(;)来结束,ECMAScript 语法就会将每行代码结尾处的换行作为 JavaScript 语句的结束,不过前提是没有破坏 JavaScript 语句的完整功能。因此,绝大多数的 程序员还是会老老实实地写上分号(;)作为0 码力 | 52 页 | 3.83 MB | 1 年前3
[试读] Angular 5 高级编程使用 JavaScript 模块 加载器 ..............................73 5.2.2 理解基本工作流.................74 5.3 使用语句...................................75 5.4 定义和使用函数.......................75 5.4.1 定义带参数的函数..... ...79 5.5 使用变量和类型.......................80 5.6 使用 JavaScript 操作符.............84 5.6.1 使用条件语句.....................84 5.6.2 相等操作符和恒等操作符....85 5.6.3 显式类型转换.....................86 5.7 处理数组 文件的内容。当在某一章中首次使用一个文件时,将列出该文件的完整内容,就像在代码 清单 1-1 中所示的那样。代码清单的标题中将包含文件的名称,以及应该在哪个文件夹中 创建该文件。更改代码时,将以粗体显示修改过的语句。 代码清单 1-1 完整的示例文档 import { NgModule } from "@angular/core"; import { BrowserModule } from "@0 码力 | 42 页 | 6.14 MB | 1 年前3
[试读]Angular 应用安全编程JavaScript 中,每个文件是一个模块,文件中定义的所有对象都从属于那个模块。通过 export 关键字,模 块可以把它的某些对象声明为公共的。其它 JavaScript 模块可以使用 import 语句来访问这些公共对象。 架构概览 5 1.2 NgModule 和 JavaScript 的模块 NgModule 系统与 JavaScript(ES2015)用来管理 JavaScript 对象的模块系统不同,而且也没有直接关联。 块可以把它的某些对象声明为公共的。其它 JavaScript 模块可以使用 import 语句来访问这些公共对象。 JavaScript 模块 JavaScript 中,每个文件是一个模块,文件中定义的所有对象都从属于那个模块。通过 export 关键字,模 块可以把它的某些对象声明为公共的。其它 JavaScript 模块可以使用 import 语句来访问这些公共对象。 JavaScript 中,每个文件是一个模 块可以把它的某些对象声明为公共的。其它 JavaScript 模块可以使用 import 语句来访问这些公共对象。 JavaScript 中,每个文件是一个模块,文件中定义的所有对象都从属于那个模块。通过 export 关键字,模块可以把它的某些对象声明为公共的。其它 JavaScript 模块可以使用 import 语句来 访问这些公共对象。 JavaScript 中,每个文件是一个模块,文件中定义的所有对象都从属于那个模块。通过0 码力 | 27 页 | 177.00 KB | 1 年前3
TypeScript 类型系统接口合并 接口继承 类实现接口 TypeScript 接口 15 TypeScript 类型断言 16 TypeScript 类型守卫/类型收敛 17 当遇到下面这些条件语句时,TypeScript会在语句作用域内部收敛变量的类型 TypeScript 类型守卫/类型收敛 18 此处a为string类型 此处a为number类型 此处shape为Square类型 此处shape为Rectangle类型 infer运算符在extends条件语句中表示待推测的类型量 TypeScript 泛型编程 22 其他的Utility Type工具类型…… StaticScript | 仿TypeScript静态类型编程语言 23 基础框架:Antlr + LLVM 特性:int / float / boolean / string / array+常见基础控制语句 状态:开发中 我目前的研究方向0 码力 | 25 页 | 1.27 MB | 1 年前3
共 29 条
- 1
- 2
- 3













