js文法概述

來源:互聯網
上載者:User

標籤:

# 文法概述

## JavaScript的引入方式
1. 直接在`script`標籤內部書寫代碼

```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
      console.log(‘hello, world‘);
    </script>
  </head>
  <body>
  </body>
</html>
```
2. 通過`script`標籤的`src`屬性,引入外部的JavaScript檔案

```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <script type="text/javascript" src="./index.js"></script>
  </body>
</html>
```

## 資料類型
在JavaScript中一種有5種原始類型
- 數實值型別(`number`)
- 字串類型(`string`)
- 布爾實值型別(`boolean`)
- null
- undefined

## 變數的命名規則
命名規則:
- 第一個字元可以是任意Unicode大小寫字母,以及貨幣符號($)和底線(_)。
- 第二個字元及後面的字元,還可以用數字。
    - 不能使用保留字作為變數名

##### *JavaScript保留字*
`abstract`
`boolean` `break` `byte`
`case` `catch` `char` `class` `const` `continue`
`debugger` `default` `delete` `do` `double`
`else` `enum` `export` `extends`
`false` `final` `finally` `float` `for` `function`
`goto`
`if` `implements` `import` `in` `instanceof` `int` `interface`
`long`
`native` `new` `null`
`package` `private` `protected` `public`
`return`
`short` `static` `super` `switch` `synchronized`
`this` `throw` `throws` `transient` `true` `try` `typeof`
`var` `void` `volatile`
`while` `with`

*example*
#### 合法的命名規則
`arg0`
`_tmp`
`$elem`
`π`
#### 不合法的命名規則
`1a`
`23`
`***`
`a+b`
`-d`
`var`
`return`

## 操作符
ECMA-262描述了一組用於操作資料值的操作符,包括算術操作符(如加號和減號)、位操作符、關係操作符和相等操作符。

#### 一元操作符
1. 遞增和遞減操作符(`++` `--`)
2. 一元加和減操作符
###### 對非數值應用一元加操作符時,該操作符會把這個數值強制轉換成數實值型別

#### 算術操作符
`+` `-` `*` `/` `%`

#### 邏輯操作符
不同類型的值轉換成布爾值
##### 對象 => `true`
##### Null 字元串 => `false`
##### 非Null 字元串 => `true`
##### 數值0 => `false`
##### 任意非0數值(包括`Infinity`) => `true`
##### `null` => `false`
##### `NaN` => `false`
##### `undefined` => `false`

1. 邏輯非(`!`)
###### 邏輯非運算子有一個歎號(`!`)表示,可以用於JS中任何值。無論這個值是什麼資料類型,該操作符都會返回一個布爾值。
###### 操作不同類型值的傳回值
###### 1. 如果該值是一個對象,返回`false`
###### 2. 如果該值是一個Null 字元串,返回`true`
###### 3. 如果該值是一個非Null 字元串,返回`false`
###### 4. 如果該值是一個數值`0`,返回`true`
###### 5. 如果該值是任意非`0`數值(包括`Infinity`),返回`false`
###### 6. 如果該值是`null`,返回`true`
###### 7. 如果該值是`NaN`,返回`true`
###### 8. 如果該值是`undefined`,返回`true`
2. 邏輯與(`&&`)
###### 邏輯與有兩個和號(`&&`)表示,有兩個運算元,可以操作JS中的任意兩個值。當兩個資料值都是布爾值的時候,該操作符會返回布爾值。如果有一個數值不是布爾值,那麼則不一定會返回布爾值。
###### 但有一個資料值不是布爾值的時候,它的返回結果遵循以下規則:
###### 1. 如果第一個運算元是對象,則返回第二個運算元
###### 2. 如果第二個運算元是對象,則只有在第一個運算元的求值結果為`true`的情況下才會返回該對象
###### 3. 如果兩個運算元都是對象,那麼會返回第二個運算元
###### 4. 如果有一個運算元是`null`,那麼返回`null`
###### 5. 如果有一個運算元是`NaN`,那麼返回`NaN`
###### 6. 如果有一個運算元是`undefined`,那麼返回`undefined`
3. 邏輯或(`||`)
###### 邏輯或操作符有兩個豎線符號(`||`),有兩個運算元,可以操作JS中的任意兩個值。
###### 如果兩個運算元都是布爾值,只有在兩個運算元都為`false`的時候才會返回`false`,否則返回`true`。
###### 如果有一個運算元不是布爾值,則遵循以下規則:
###### 1. 如果第一個運算元是對象,則返回第一個運算元
###### 2. 如果第一個運算元的求值結果為`false`,則返回第二個運算元
###### 3. 如果兩個數都是對象,則返回第一個運算元
###### 4. 如果兩個運算元都是`null`,則返回`null`
###### 5. 如果兩個運算元都是`NaN`,則返回`NaN`
###### 6. 如果兩個運算元都是`undefined`,則返回`undefined`

4. 短路操作
###### 在`與`操作符(`&&`)和`或`操作符(`||`)中,如果第一個運算元就已經能確定最終返回的結果,那麼就不會去計算第二個運算元了


## 關係操作符
小於(`<`)、大於(`>`)、小於等於(`<=`)、大於等於(`>=`)這幾個關係操作符用於對兩個值進行比較,比較的規則與我們在上數學課上所學的一樣。這幾個操作符都會返回一個布爾值。

## 相等操作符
相等操作符(`==`)、不相等操作符(`!=`)、全等操作符(`===`)、不全等操作符(`!==`)
#### 相等和不相等 => 先轉換類型再比較
#### 全等和不全等 => 僅比較而不轉換類型

## 賦值操作符
簡單的賦值操作符由等號(`=`)表示,起作用就是把右側的值賦給左側的變數。

## 條件操作符(三目運算子)
`boolean_expression ? true_value : false_value`

## 運算子的優先順序

| 運算子                                      | 描述                         |
| ---------------------------------------- | -------------------------- |
| `++` `--` `-` `+` `~` `!` `delete` `new` `typeof` `void` | 一元運算子、返回資料類型、對象建立、未定義值     |
| `*` `/` `%`                              | 乘法、除法、模數                   |
| `+` `-` `+`                              | 加法、減法、字串串連                |
| `<<` `>>` `>>>`                          | 移位                         |
| `<` `<=` `>` `>=` `instanceof`           | 小於、小於等於、大於、大於等於、instanceof |
| `==` `!=` `===` `!==`                    | 等於、不等於、嚴格相等、非嚴格相等          |
| `&&`                                     | 邏輯與                        |
| `\|\|`                                   | 邏輯或                        |
| `?:`                                     | 條件                         |
| `=`                                      | 賦值、運算賦值                    |

下表按從最高到最低的優先順序列出JavaScript運算子。具有相同優先順序的運算子按從左至右的順序求值。

## 代碼注釋
源碼中被JavaScript引擎忽略的部分就叫做注釋,它的作用是對代碼進行解釋。Javascript提供兩種注釋:一種是單行注釋,用 `//` 起頭;另一種是多行注釋,放在 `/*` 和 `*/` 之間。

```javascript
// 單行注釋

/*
*
* 多行注釋
*
**/
```

js文法概述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.