JavaScript的基本概念

主要内容:

  • 语法
  • 数据类型
  • 流控制语句
  • 理解函数

ECMA-262描述了JavaScript语法等基本概念。目前,ECMA-262第3版中定义的ECMAScript是各个浏览器实现最多的版本。所以主要按照第3版地冠以的ECMAScript介绍语言的基本概念,并就第5版的变化给出说明

3.1 语法

3.1.1 区分大小写

例如 test与Text分别表示两个不同的变量。函数名称不能用typeof,但是TypeOf是一个有效的函数名。

3.1.2 标识符

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

第一个字符必须是字母、下划线(_)或美元符号($)。

其他字符可以是字母、下划线、美元符号或数字。

标识符中的字母可以包含扩展的ASCII或Unicode字母字符,但是不推荐这样做。标识符命名采用驼峰命名法。

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

3.1.3 注释

与C风格注释相同,包括单行注释和块级注释。

//单行注释

/*

多行( 块级)注释

*/

3.1.4 严格模式

ECMAScript 5 引入了严格模式的概念。为JavaScript定义了一种不同的解析和执行模型。在严格模式下,ECMAScript 3 中一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。在整个脚本中启用严格模式,可以在顶部添加以下代码:

"use strict"

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

function doSomething(){

"use strict"

//函数体

}

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

3.1.5 语句

ECMAScript中的语句以一个分号结尾;如果省略分号,则由解析器确定语句的结尾。虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它。因为这样可以避免很多错误。

3.2 关键字和保留字

ECMA-262描述了一组具有特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或用于执行特定的操作等。ECMAScript的全部关键字(带*号的是第5版新增关键字)如下:

JavaScript的基本概念

ECMA-262还描述了另外一组不能用作标识符的保留字,它们有可能将来被用作关键字。以下是ECMA-262第3版定义的全部保留字:

JavaScript的基本概念

第5版把非严格模式下运行时的保留字缩减为下列这些:

JavaScript的基本概念

在严格模式下,第5版还对以下保留字施加了限制:

JavaScript的基本概念

let和yield是第5版新增的保留字

3.3 变量

ECMAScript的变量是松散类型的,可以保存任何类型的数据。每个变量仅仅是一个用于保存值得占位符而已。定义变量时要使用var操作符。

var message;

这行代码定义了一个名字为message的变量,该变量可以用来保存任何值(未经初始化的变量,会保存一个特殊的值undefined)。ECMAScript也支持直接初始化变量,因此在定义变量的同时可以设置变量的值。

var message="hello";

message=100;//有效,但不推荐。

使用var操作符定义的变量将成为定义该变量的作用域中的局部变量。如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁,例如:

function test(){

var message="hello";//局部变量

}

test();

alert(message);//错误

如果定义变量时,省略了var,这就会创建一个全局变量

function test(){

message="hello";//局部变量

}

test();

alert(message);//"hello"

这样,只要调用过一次test()函数,这个变量就有了定义,就可以在函数外部的任何地方被访问到。

虽然省略var操作符可以定义全局变量,但是我们不推荐这么做。因为在局部作用域中定义的全局变量很难维护,而且如果有意地忽略var操作符,也会由于相应 的变量不会马上就有定义而导致不必要的混乱。给未经声明的变量赋值在严格模式下会导致抛出ReferenceError错误。

可以使用一条语句定义多个变量,之间用逗号分隔

var message="hello",

found=false,

age=18;

在严格模式下,不能定义名为eval或arguments的变量,否则会导致错误。

上一篇:EconomicIndoor集成测试


下一篇:css中自定义字体