[TOC]
# 基本概念
* * * * *
### 3.1 語法
#### 3.1.1 ECMAScript中的一切(變量、函數名和操作符)都區分大小寫。
#### 3.1.2 標識符
標識符: 指變量、函數、屬性的名字,或者函數的參數。
**命名規則:**
* 第一個字符必須是一個字母、下劃線(`_`)或一個美分符號(`$`)
* 其他字符可以是字母、下劃線、美元符號或數字。
按照慣例,ECMAScript標識符采用駝峰大小書寫格式,及第一個字母小寫,其他每個單詞首字母大寫,如`myWord`
#### 3.1.3 注釋
源碼中被JavaScript引擎忽略的部分就叫做注釋,它的作用是對代碼進行解釋。Javascript提供兩種注釋:一種是單行注釋,用//起頭;另一種是多行注釋,放在/* 和 */之間。
~~~
// 這是單行注釋
/* /*
這是 * 另一種
多行 * 多行
注釋 * 注釋
*/ */
~~~
#### 3.1.4 語句
ECMAScript中的語句以一個**分號結尾**;如果省略分號,則由解析器確定語句的結尾。
JavaScript程序的執行單位為行(line),也就是一行一行地執行。一般情況下,每一行就是一個語句。
**語句(statement)是為了完成某種任務而進行的操作**,比如下面就是一行賦值語句:
~~~
var a = 1 + 3;
~~~
* * * * *
### 3.2 關鍵字和保留字
ECMA-262描述了一組具有**特定用途**的**關鍵字**,這些關鍵字可用于控制語句的開始或結束,或者用于執行特定操作等,**不能用作標識符**。
~~~
break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger function this with
default if throw delete
in try
~~~
ECMA-262還描述了一組不能用作標識符的**保留字**:
~~~
abstract enum int short
boolean export interface static
byte extends long super
char final native synchronized
class float package throws
const goto private transient
debugger implements protected volatile
double import public
~~~
如果使用關鍵字作標識符,會導致“Identifier Expected”錯誤。
* * * * *
### 3.3變量
變量是對**“值”的引用**,使用變量等同于引用一個值。每一個變量都有一個變量名。
ECMAScript的變量是**松散類型**的,所謂松散類型就是可以用來保存任何類型的數據。定義變量時要使用var操作符,后跟變量名。
~~~
var message
~~~
注意:使用var操作符定義的變量將成為定義該變量的**作用域中的局部變量**,也就是說,如果在函數中使用var定義一個變量,那么這個變量在函數退出后就會被銷毀。
~~~
function test(){
var message = 'm'; //局部變量
}
test();
console.log(message); // 報錯
~~~
如果省略了var操作符,就相當于定義了一個**全局變量**,在函數外部的任何地方都可以訪問到。
~~~
function test(){
message = 'm'; //局部變量
}
test();
console.log(message); // "m"
~~~
不推薦省略var操作符。
一條語句定義多個變量,變量之間用逗號(`,`)分隔開
~~~
var message = "hi",
name = "Tom",
age = 10;
~~~
- 前言
- 第一章 JavaScript簡介
- 第三章 基本概念
- 3.1-3.3 語法、關鍵字和變量
- 3.4 數據類型
- 3.5-3.6 操作符、流控制語句(暫略)
- 3.7函數
- 第四章 變量的值、作用域與內存問題
- 第五章 引用類型
- 5.1 Object類型
- 5.2 Array類型
- 5.3 Date類型
- 5.4 基本包裝類型
- 5.5 單體內置對象
- 第六章 面向對象的程序設計
- 6.1 理解對象
- 6.2 創建對象
- 6.3 繼承
- 第七章 函數
- 7.1 函數概述
- 7.2 閉包
- 7.3 私有變量
- 第八章 BOM
- 8.1 window對象
- 8.2 location對象
- 8.3 navigator、screen與history對象
- 第九章 DOM
- 9.1 節點層次
- 9.2 DOM操作技術
- 9.3 DOM擴展
- 9.4 DOM2和DOM3
- 第十章 事件
- 10.1 事件流
- 10.2 事件處理程序
- 10.3 事件對象
- 10.4 事件類型
- 第十一章 JSON
- 11.1-11.2 語法與序列化選項
- 第十二章 正則表達式
- 12.1 創建正則表達式
- 12.2-12.3 模式匹配與RegExp對象
- 第十三章 Ajax
- 13.1 XMLHttpRequest對象
- 你不知道的JavaScript
- 一、作用域與閉包
- 1.1 作用域
- 1.2 詞法作用域
- 1.3 函數作用域與塊作用域
- 1.4 提升
- 1.5 作用域閉包
- 二、this與對象原型
- 2.1 關于this
- 2.2 全面解析this
- 2.3 對象
- 2.4 混合對象“類”
- 2.5 原型
- 2.6 行為委托
- 三、類型與語法
- 3.1 類型
- 3.2 值
- 3.3 原生函數