Introduction

JavaScript是一种跨平台的,面向对象的脚本语言。 它是一种小型轻量级语言。 在主机环境(例如,Web浏览器)中,JavaScript可以连接到其环境的对象以提供对它们的编程控制。


JavaScript包含对象的标准库,例如Array,Date和Math,以及一组核心的语言元素,例如运算符,控件结构和语句。 可以通过添加其他对象来扩展Core JavaScript,以实现多种用途。 例如:


What you should already know

本指南假定您具有以下基本背景:

Java and Javascript

JavaScript和Java在某些方面相似,但在其他方面则根本不同。 JavaScript语言类似于Java,但是没有Java的静态类型和强类型检查。 JavaScript遵循大多数Java表达式语法,命名约定和基本的控制流结构,这就是将其从LiveScript重命名为JavaScript的原因。


与Java的由声明构建的类的编译时系统相反,JavaScript支持基于少量表示数字,布尔值和字符串值的数据类型的运行时系统。 JavaScript具有基于原型的对象模型,而不是更常见的基于类的对象模型。 基于原型的模型提供了动态继承。 也就是说,继承的内容可能因单个对象而异。 JavaScript还支持无特殊声明要求的函数。 函数可以是对象的属性,可以作为松散类型的方法执行。


与Java相比,JavaScript是一种非常自由的语言。 您不必声明所有变量,类和方法。 您不必担心方法是公共的,私有的还是受保护的,也不必实现接口。 变量,参数和函数返回类型未明确键入。



Hello world

要开始编写JavaScript,请打开编辑器并编写您的第一个“ Hello world” JavaScript代码:

function greetMe(yourName) { alert("Hello " + yourName); } greetMe("World");

在键盘上输入代码,然后保存可以在浏览器中看到它的展开!

Variables

您可以将变量用作应用程序中值的符号名称。 变量的名称(称为标识符)符合某些规则。


JavaScript标识符必须以字母,下划线(_)或美元符号($)开头; 后续字符也可以是数字(0-9)。 因为JavaScript区分大小写,所以字母包括字符“ A”至“ Z”(大写)和字符“ a”至“ z”(小写)。


您可以在标识符中使用ISO 8859-1或Unicode字母,例如å和ü。 您还可以将Unicode转义序列用作标识符中的字符。 合法名称的一些示例是Number_hits,temp99和_name。



Declaring variables

您可以通过三种方式声明变量:


使用关键字var。 例如,

var x = 42

此语法可用于声明局部变量和全局变量。


通过简单地为其分配一个值。 例如,

x = 42

这总是声明一个全局变量。 它会生成严格的JavaScript警告。 您不应该使用此变量。


使用关键字let。 例如,

let y = 13

此语法可用于声明块作用域局部变量。 请参阅下面的可变范围。






Variable scope

当您在任何函数之外声明变量时,该变量称为全局变量,因为它可用于当前文档中的任何其他代码。 在函数中声明变量时,该变量称为局部变量,因为它仅在该函数中可用。


ECMAScript 2015之前的JavaScript没有block语句范围; 相反,在块中声明的变量对于该块所在的函数(或全局范围)而言是局部的。 例如,以下代码将记录为5,因为x的范围是在其中声明x的函数(或全局上下文),而不是块(在这种情况下为if语句)。

if (true) { var x = 5; } console.log(x); // 5

使用ECMAScript 2015中引入的let声明时,此行为会更改。

if (true) { let y = 5; } console.log(y); // ReferenceError: y is not defined

Global variables

实际上,全局变量是全局对象的属性。 在网页中,全局对象是window,因此您可以使用window.variable语法设置和访问全局变量。


因此,您可以通过指定窗口或框架名称来访问在一个窗口或框架中从另一个窗口或框架中声明的全局变量。 例如,如果在文档中声明了一个名为phoneNumber的变量,则可以从iframe中将此变量称为parent.phoneNumber。


Constants

您可以使用const关键字创建一个只读的,名为constant的常量。 常量标识符的语法与变量标识符的语法相同:它必须以字母,下划线或美元符号开头,并且可以包含字母,数字或下划线字符。


const PI = 3.14;

在脚本运行时,常量不能通过赋值更改值,也不能重新声明。 必须将其初始化为一个值。

常量的作用域规则与let块作用域变量的作用域规则相同。 如果省略const关键字,则假定标识符表示变量。

您不能在相同范围内声明与函数或变量同名的常量。 例如:



// THIS WILL CAUSE AN ERROR function f() {}; const f = 5; // THIS WILL CAUSE AN ERROR ALSO function f() { const g = 5; var g; //statements }

但是,对象属性不受保护,因此执行以下语句不会出现问题。

const MY_OBJECT = {"key": "value"}; MY_OBJECT.key = "otherValue";

Data types

最新的ECMAScript标准定义了七种数据类型:

尽管这些数据类型的数量相对较少,但是它们使您能够对应用程序执行有用的功能。 对象和功能是语言中的其他基本元素。 您可以将对象视为值的命名容器,并将其视为应用程序可以执行的过程。

if...else statement

没什么好说的

while statement

没什么好说的

Function declarations

没什么好说的

Reference

参考 MDN