首頁 web前端 js教程 JavaScript高階程式設計(第3版)學習筆記2 js基礎語法_基礎知識

JavaScript高階程式設計(第3版)學習筆記2 js基礎語法_基礎知識

May 16, 2016 pm 05:49 PM

這篇複習一下ECMAScript規範中的基礎語法,英文好的朋友可以直接閱讀官方文件。 JavaScript本質上也是一種類C語言,熟悉C語言的朋友,可以非常輕鬆的閱讀這篇文章,甚至都可以跳過,不過建議你最好還是看一看,在介紹的同時,我可能會引用一些自認為不易理解且比較流行的用法。

基礎語法

1、標識符:所謂標識符,實際上就是指一個滿足某一規範,能夠被引擎識別的名字,可以用來表示常數、變數、函數名、函數參數、物件、物件屬性等所有可命名對象的名稱。

(1)區分大小寫。

(2)以字母、底線(_)或美元符號($)開頭,其它字元可以為字母、底線、美元符號或數字。這裡的字母包含擴充的ASCII或Unicode字元。

(3)標識符不能是關鍵字、保留字、true、false、null。 (有些瀏覽器允許使用undefined,有些不能)。

(4)如果物件屬性含有空格或其它特殊字符,可以用括號括起來作為一個整體。

2、關鍵字:在語言本身有特定用途。

    break  case  catch  continue  debugger(ES5中新增)  差  if  in  instanceof  new  return  switch  this  throw  try  『

3、保留字:被語言本身保留,將來可能會作為關鍵字。

  ES3中的保留字:

    

abstract  boolean  byte  char  class  const  debugger  行 n  const  debugger 四 float  goto  implements  import  int  interface  long  native  package  publicvate 腳 native  package 甀private 腳材 銫 tec synchronized  throws  transient  volatile

  ES5中的非嚴格模式下的保留字:

    

class  const  enum  export  extends  import  ner

  ES5的嚴格模式下的保留字:

    

implements  interface  let(ES5中新增)  package  private  pro產品  4、嚴格模式:在ES5中引入嚴格模式,透過使用"use strict"來開啟嚴格模式,可以在頂部開啟全域嚴格模式,也可以在函數作用域範圍內開啟局部嚴格模式。


複製程式碼

程式碼如下: "use strict"//開啟全域全域嚴格模式,在ES3中,不會有任何影響function fn(){   "use strict"//開啟局部嚴格模式
}


5、註解:在ECMAScript中,支援兩種格式的註釋,單行註解與區塊級註解:



複製程式碼
程式碼如下: 程式碼如下:


程式碼如下:

/🎜> / 單行註釋,以兩個斜杠//開頭/*
* 多行(塊級)註釋,以一個斜杠/和一個星號*開頭,一個星號和一個斜杠結尾,這里中間行的星號*不是必須的
*/


說明:隨著JS程式碼越來越複雜,註解也變的越來越重要,而文件自動化也顯得愈加重要,目前已經有很多開源JS函式庫用來自動化產生類似Javadoc的JS文檔,像是JSDoc、YUIDoc等,這個時候,對註解也會有相應的格式要求,有興趣的朋友可以找相關資料研究。
複製代碼


代碼如下:
var age = 29; age = '>age = ' ';  //雖然有這種彈性,但我建議你除非明確知道自己在做什麼,否則別這樣做。
(2)var操作符:變數使用var來聲明,對於未初始化的變量,會預設為undefined,也可以直接使用變數而不聲明(在我看來,這同樣是一個沒有存在理由的特性),它們之間最重要的區別是使用var聲明時,聲明的變數只在當前作用域有效,而不使用var時,變數就會定義在全域作用域。可以通過下面的例子來體會其中的區別:
複製代碼 代碼如下:

var name = 'linjisong'; //定義全域變數並賦值
age = 29; //直接使用變量,相當於定義全域變數並賦值
//sal; //錯誤
var salary; / /定義全域變量,未初始化
//這裡只是函數聲明,沒有實際調用,所以內部定義的變數不會生效
function fn(){
var name = 'oulinhai';//定義局部變數並賦值
age = 23; //給全域變數賦值
work = 'it';      //沒有使用var,即使是在函數局部的變量,也會成為全域變數
}
//函數實際呼叫前
console.info(salary);   //undefined
console.info(name);   // linjisong
console.info(age); // 29
try{
console.info(work);//由於在全域環境中沒有定義work,這裡會拋出異常
}catch(e){}
fn();//實際調用,程式碼中變數的變更會顯現出來
console.info(name); // linjisong,由於函數內部使用了var,所以不會改變全域的name值
console.info(age); // 23
console.info(work); // it

(3)宣告提升:這個問題在講函數宣告和函數表達式時還會再談到,這裡先提一下,看程式碼:
複製程式碼 程式碼如下:

console.info(name); /undefined
console.info(getName);//getName()函數
console.info(getName());//undefined
try{
console.info(age);//異常
}catch(e){
console.info(e);//ReferenceError
}
console.info(getAge);//undefined
try{
console. info(getAge());//異常
}catch(e){
console.info(e);//TypeError
}
var name = 'linjisong';//變數聲明,提升
age = 29;//直接使用全域變量,不提升
function getName(){//函數聲明,提升
return name;
}
var getAge = function( ){//變數getAge的聲明,提升;取得年齡的匿名函數表達式,不提升
return age;
}
console.info(name);//linjisong
console.info (getName);//getName()函數
console.info(getName());//linjisong
console.info(age);//29
console.info(getAge);//取得年齡的匿名函數
console.info(getAge());//29

你有沒有自己推論出上面的輸出結果?如果已經推斷出,可以跳過了,如果還存有疑問,那麼先看看下面關於聲明提升的描述,然後再回過頭來印證上面的輸出結果:
    A、引擎在解析時,首先會解析函數聲明,然後解析變數宣告(解析時不會覆寫型別),最後再執行程式碼;
    B、解析函數宣告時,會同時解析型別(函數),但不會執行,解析變數宣告時,只解析變數,不會初始化。
  這裡涉及的只是全域作用域,在函數作用域中還有函數參數也和宣告提升有關,在後面講述函數時再討論。
  上面的程式碼,首先會把第18行的函數宣告和第16、21行的變數宣告提升到最開始解析,然後再執行。因此第1、9行因為變數宣告提升但尚未初始化,所以輸出undefined,從而第11行因為無法確定是函數類型而拋出類型異常;第2、3行因為函數宣告提升且解析函數類型,所以第2行輸出函數,第3行可以呼叫函數,但傳回值未初始化而輸出undefined;第5行因為尚未宣告變數,會拋出引用例外。
(4)可以使用一條語句定義多個變量,用逗號分開即可。如:
複製程式碼 程式碼如下:

var name='linjisong' age=29,
work='it';


(5)在ES5的嚴格模式下,無法定義名為eval或arguments的變數。
7、語句
(1)語句:以一個分號「;」結尾,如果省略分號,由解析器決定語句的結尾。
  對於JS中語句可以省略分號的特性,我想不到任何存在的理由,強烈建議每條語句均使用分號來明確結束,不要讓解析器花費時間來「猜測」你的程序,而且,更重要的是,在許多壓縮工具中,猜測並不能保證百分之百的正確。
(2)代碼區塊:以左花括號({)開始,右花括號(})結束。
  在JS中雖然有程式碼區塊的概念,但是卻沒有對應的區塊級作用域,這是和一般類別C語言所不同的。對於控制語句(例如if),不要因為只有一條語句就不使用程式碼區塊,這會給維護你程式的伙計種下犯錯的種子。
複製程式碼 程式碼如下:

for(var i=0; i{
}
console.info(i);//輸出10,在程式碼區塊之後仍可以存取i,說明JS無區塊級作用域
if(i //console.info(i); 不使用程式碼區塊,在維護時(例如新增1條語句)容易犯錯
{
console.info(i);
}

 花括號({})除了作為程式碼區塊來使用外,還有一個很重要的用處就是定義物件字面量,這在後面還會再有論述。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1276
29
C# 教程
1256
24
Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

從C/C到JavaScript:所有工作方式 從C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在行動中:現實世界中的示例和項目 JavaScript在行動中:現實世界中的示例和項目 Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

了解JavaScript引擎:實施詳細信息 了解JavaScript引擎:實施詳細信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:社區,圖書館和資源 Python vs. JavaScript:社區,圖書館和資源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

Python vs. JavaScript:開發環境和工具 Python vs. JavaScript:開發環境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

C/C在JavaScript口譯員和編譯器中的作用 C/C在JavaScript口譯員和編譯器中的作用 Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

See all articles