JavaScript語(yǔ)法、語(yǔ)句、關(guān)鍵字保留字、變量

2020-11-2    前端達(dá)人

第三章 基本概念

3.1 語(yǔ)法

3.1.1 區(qū)分大小寫

  1. 變量名test和Test完全不同

3.1.2 標(biāo)識(shí)符:變量、函數(shù)、屬性的名字,或者函數(shù)的參數(shù)

  1. 命名規(guī)則
    • 第一個(gè)字符必須是一個(gè)字母、下劃線、或者美元符號(hào)$
    • 其他字符可以是字母、下劃線、美元符號(hào)、數(shù)字
  2. 采用駝峰大小寫格式:第一個(gè)字母小寫,剩下每個(gè)單詞首字母大寫。
    • for example:myName、herAge。
    • 駝峰式命名雖不是強(qiáng)制要求,但可以視為一種最佳實(shí)踐。

3.1.3 注釋

包括單行注釋和塊級(jí)注釋。

  1. 單行注釋:以兩個(gè)斜杠開頭。如下所示:
// alert(“HelloWorld!”) 
  • 1
  1. 塊級(jí)注釋:以一個(gè)斜杠和一個(gè)星號(hào)(/*)開頭,以一個(gè)星號(hào)和一個(gè)斜杠結(jié)尾。如下所示:
/*
這是一個(gè)
多行的
塊級(jí)注釋
*/ 
  • 1
  • 2
  • 3
  • 4
  • 5

3.1.4 嚴(yán)格模式

  1. 定義:為JavaScript定義的一種不同的解析與執(zhí)行模型。
  2. 使用方法:
    • 在整個(gè)腳本中啟用嚴(yán)格模式,可以在頂部添加代碼“use strict”;
    • 也可以在函數(shù)內(nèi)部的上方包含這條編譯指示。
  3. 使用效果:嚴(yán)格模式下,ECMAScript3中的一些不確定行為會(huì)得到處理,而且對(duì)某些不安全的操作也會(huì)拋出錯(cuò)誤。嚴(yán)格模式下,js的執(zhí)行效果會(huì)有很大不同。

3.1.5 語(yǔ)句

  • ECMAScript中的語(yǔ)句以一個(gè)分號(hào)結(jié)尾,但非必需。
  • 若省略分號(hào),則由解析器確定語(yǔ)句的結(jié)尾。
  • 建議不要省略分號(hào),因?yàn)閷懮辖馕銎骶筒槐匾倩〞r(shí)間推測(cè)應(yīng)該在哪里插入分號(hào)了。

3.2 關(guān)鍵字和保留字

ECMA-262描述了一組具有特定用途的關(guān)鍵字和一組不能用做標(biāo)識(shí)符的保留字。

  1. 關(guān)鍵字:可以用于表示控制語(yǔ)句的開始或結(jié)束、或用于執(zhí)行特定操作等。
  2. 保留字:保留字雖然在這門語(yǔ)言中還沒有特定的用途,但他們有可能在將來被用作關(guān)鍵字。

3.3 變量

  • ECMAScript的變量是松散類型,即可以用來保存任何類型的數(shù)據(jù)。
  • 定義變量時(shí)要用var操作符,后跟變量名,例如var message,當(dāng)然了,也可以直接在定義的時(shí)候?qū)ψ兞孔鲆粋€(gè)初始化,例如var message = ‘hi’ ;
  • 這段的意思是變量message中保存了一個(gè)字符串“hi”。像這樣初始化變量并不會(huì)把它標(biāo)記為字符串類型,初始化的過程就只是給變量賦了一個(gè)值。
  • 因此,劃重點(diǎn),可以在修改變量的同時(shí)修改值的類型。例如:
var message = ‘hi’ ;
message = 100 ;   //有效,但不推薦
//這個(gè)例子代表變量message一開始保存了一個(gè)字符串“hi”,然后該值又被一個(gè)數(shù)字值100取代了。 
  • 1
  • 2
  • 3
  • 有一點(diǎn)需要注意,用var操作符定義的變量將成為該變量的作用域中的局部變量。也就是說如果在函數(shù)中使用var定義一個(gè)變量,那么這個(gè)變量在函數(shù)退出后就會(huì)被銷毀。例如:
function test(){
    var  message = ‘hi’ ; //局部變量
} ;
test();
alert(message); //錯(cuò)誤

//為什么是錯(cuò)誤?
//這里,變量message是在函數(shù)里用var定義的,當(dāng)函數(shù)被調(diào)用時(shí),就會(huì)創(chuàng)建該變量并為其賦值。而在此之后,這個(gè)變量會(huì)立即被銷毀。所以在執(zhí)行alerat()那行代碼的時(shí)候message已經(jīng)被銷毀了,因此報(bào)錯(cuò)。 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

那么,該怎么解決呢?

  • 在函數(shù)內(nèi)部省略掉var操作符,就可以創(chuàng)建一個(gè)全局變量,例子:
function test(){
    message = ‘hi’ ; //局部變量
} ;
test();
alert(message); // hi
//在函數(shù)內(nèi)部不用var會(huì)創(chuàng)建全局變量。
//但我們并不提倡這種做法,因?yàn)榫植孔饔糜蛑卸x的全局變量很難去維護(hù)。
//所以我們應(yīng)該選擇在開始就定義好所有的變量。

分享本文至:

日歷

鏈接

個(gè)人資料

存檔