初識JavaScript

来源:https://www.cnblogs.com/caesar-id/archive/2019/03/19/10560197.html
-Advertisement-
Play Games

一、語法結構 編程語言的語法結構是一套基礎性規則,用來描述如何使用這門語言來編寫程式。作為語法的基礎,它規定了諸如變數名的命名規範,註釋的規範,以及程式語句之間如何分隔等規則。下麵是介紹JavaScript的基本語法結構。 1、字元集JavaScript程式是用Unicode字元集編寫的,所以它幾乎 ...


一、語法結構

編程語言的語法結構是一套基礎性規則,用來描述如何使用這門語言來編寫程式。作為語法的基礎,它規定了諸如變數名的命名規範,註釋的規範,以及程式語句之間如何分隔等規則。下麵是介紹JavaScript的基本語法結構。


1、字元集
JavaScript程式是用Unicode字元集編寫的,所以它幾乎支持世界上的所有語言。


2.1.1區分大小寫
JavaScript是區分大小寫的,關鍵字,變數名,函數名和所有標識符都必須採用一致的大小寫形式,如關鍵字while和While、WHILE分別代表不同的意義。
但需要註意的是,HTML並不區分大小寫(儘管XHTML區分大小寫,但由於瀏覽器的容錯能力還是會正確解析渲染的)。由於他和客戶端JavaScript聯繫緊密,因此這裡很容易混淆。許多客戶端JavaScript對象和屬性與他們所表示的HTML標簽和屬性同名,在HTML中這些標簽和屬性名可以使用大寫也可以是小寫,而在JavaScript中必須是小寫。例如在HTML中設置事件處理程式時,onclick屬性可以寫成onClick,但在JavaScript代碼(或者XHTML文檔)中,必須使用小寫的onclick。

2.1.2 空格、換行符和格式控制符
JavaScript會忽略程式中標識(token)之間的空格,換行符。由於可以在代碼中隨意使用空格和換行,因此可以採用整齊,一致的縮進來形成統一的編碼風格,從而提高代碼的可讀性。
除了可以識別普通的空格符(\u0020),JavaScript還可以識別如下這些表示空格的字元:
水平製表符(\u0009)

垂直製表符(\u000B)

換頁符(\u000C)

不中斷空白(\u00A0)

位元組序標記(\ufeff)
JavaScript將如下字元識別為行結束符:
換行符(\u000A)
回車符(\u000D)
行分隔符(\u2028)
段分隔符(\u2029)
回車符加換行符在一起被解析為一個單行結束符。

2.2註釋
JavaScript支持兩種格式的註釋。
行註釋:在“//”之後的文本都會被JavaScript當做註釋忽略,
多行註釋:“/*”多行註釋“*/,註意多行註釋是不能嵌套的。


2.3直接量
所謂直接量就是程式中可以直接使用的數值,如下類型:
整數:1,2,3...
小數:1.2,2.34,...
字元串:“Hello World”
bool:true,false。
正則表達式:/正則表達式規則/
null:空


2.4標識符的命名規則
JavaScript中標識符必須以字母、下劃線或$開始,後續的字元可以是字母,數字,下劃線或美元符($)。需要註意的是和其它語言一樣,標識符名是不能以數字開頭的。

2.5保留字

我 們在命名變數名時不能與JavaScript的保留字重名。下麵是一些常見關鍵字:

abstract arguments boolean break byte
case catch char class* const
continue debugger default delete do
double else enum* eval export*
extends* false final finally float
for function goto if implements
import* in instanceof int interface
let 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 yield  

2.6可選的分號
和其它許多編程語言一樣,JavaScript使用分號(;)將語句分隔開,這對增強代碼的可讀性和整潔性是非常重要的,缺少分隔符,一條語句的結束就變成了下一條語句的開始。在JavaScript中如果語句獨占一行,通常可以省略分號,但還是建議使用分號來明確標記語句的結束,這是一種編程風格,還有一種就是在任何可以省略分號的地方都將其省略,只有在不得不用的時候才使用分號,介於這種風格需要註意以下問題:

// 1、兩條語句獨占一行,並且能被正確解析。所以可以省略分號
a = 3
b = 4

// 2、兩條語句在一行,必須用分號標明語句的結束位置
a = 3; b = 4;  // b的分號可以省略

// 3、下麵要註意的就是JavaScript並不是將所有獨占一行的語句都自動填補分號
//    前提是獨占一行的語句能夠得到正確的解析,如下代碼:
var a
a
=
3
console.log(a)
// 會被解析成如下代碼
var a;
a = 3;
console.log(a);

// 4、下麵是很容易造成混淆和難以理解的地方
var y = x + f
(a+b).toString()
// 也許我們會認為JavaScript會解析成這樣var y = x + f;(a+b).toString()
/*
實際JavaScript會解析成var y = x + f(a+b).toString()
而上述代碼的本意並不是這樣,所以為了正確解析,需要寫分號來明確語句的結束。
通常來講,如果一條語句以(、[、/、+、-開始,name它既有可能和前一條
語句何在一起解析。以/、+、-開始的語句並不常見,而已(和[開始的語句
則非常常見,有些程式員喜歡保守的在語句前加一個分號,這樣哪怕之前的
語句被修改了,分號被誤刪除了,當前語句還是會正確解析:
*/
var y = x + f;
;(a+b).toString();

// 5、return和continue需要註意的地方
return
true;
/*
本意是 return true;
實際是return;true;
在return和continue後面的表達式不能有換行。如果添加了換行,程式則只有在極特殊的情況才會報錯,而且程式的調試非常不方便。
*/

// 關於++和--需要註意的地方
x
++
y
// 會被解析成x;++y;

 所以為了避免上述情況的發生,和代碼的可讀性最好還是在語句的結束位置添加分號。

二 數據類型、值和變數
JavaScript的數據類型分為兩類
原始類型(primitive type):數字、字元串、布爾值。
對象類型(object type):object。


JavaScript有兩個特殊的原始值:null和undefined(未定義),它們不是數字,字元串和布爾值,它們通常分別代表了各自特屬於類型的唯一成員。
關於對象object是屬性(property)的集合,每個屬性都由“鍵:值”構成。
普通的JavaScript對象是“鍵:值”的無序集合,JavaScript同樣定義了一種特殊對象數組(array),表示帶編號的值的有序集合。JavaScript為數組定義了專用的語法,使數組擁有一些和普通對象不同的特性。

JavaScript還定義了另一種特殊對象函數,函數是具有與它向關聯的可執行代碼的對象,通過調用函數來運行可執行代碼,並返回運算結果。
如果函數用來初始化(使用new運算符)一個新建的對象,我們稱之為構造函數(constructor)。除了數組array類和函數之外,JavaScript定義了三種有用的類,日期(data)定義了日期對象,正則(RegExp)類定義了正則表達式對象。錯誤(error)定義了JavaScript程式運行時錯誤和語法錯誤的對象。


JavaScript解釋器有自己的記憶體管理機制,可以自動對記憶體進行垃圾回收。這意味著程式員可以按需創建對象,不必擔心這些對象的銷毀和記憶體回收。當不再有任何引用指向一個對象,解釋器就會知道這個對象沒用了,然後自動回收它所占用的記憶體資源。

JavaScript程式可以更改對象屬性值和元組元素的值,數字、布爾值、null和undefined屬於不可變類型。JavaScript可以自由的進行數據類型轉換,如果在程式期望使用字元串的地方使用了數字,JavaScript會自動將數字轉換成字元串,如果在期望使用布爾值的地方使用了非布爾值,JavaScript會進行相應的轉換。


JavaScript變數是無類型的,變數可以被賦予任何類型的值,同樣一個變數可以重新賦予不同類型的值。使用var關鍵字來聲明變數。JavaScript採用詞法作用域(lexical scoping)。不在函數內聲明聲明的變數稱為全局變數,它在JavaScript程式中的任何地方都是可見的,在函數內部聲明的變數被稱為局部變數,局部變數會隨著函數的結束而銷毀。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 常規需求: 外層RecyclerView嵌套內層RecyclerView , 在上下滑動的時候會出現item數據以及view的顯示異常。 解決辦法: 1、重寫 getItemViewType 方法 2、因為是RecyclerView的復用機制導致的問題,可以暴力解決,禁止RecyclerView的復 ...
  • NSString * totalAssetString =@"1161000.00"; NSDecimalNumber *totalAssetNumber = [NSDecimalNumber decimalNumberWithString:totalAssetString]; NSDecimalN ...
  • RadioButton為單選按鈕,他需要與RadioGroup配合使用 對應的佈局代碼: Java代碼: 在上述代碼中,利用setCheckedChangeListener()監聽RadioGroup控制項狀態,獲取監聽結果輸出到TextView控制項里顯示 ...
  • 學CSS很好的一個方法大概是先用純CSS來實現一個自己的框架,然後便可以在之後的使用中對一開始可能很粗糙的框架做細緻的優化與改進,刪除些冗餘,添加些功能之類的。 當然,為了避免一開始寫框架時候的時候手足無措,對一個css框架應該實現些什麼功能不大清楚,便可以參考已有的框架自己重寫一遍,寫的過程中這些 ...
  • 01-jquery簡介1)功能: ·html元素選取 ·Html元素操作 ·Css操作 ·Html事件函數 ·JavaScript特效和動畫 ·DOM的遍歷及修改 ·AJAX ·Utilities ·插件2)版本支持 ·jquery2 及以上不支持IE6,7,8 ·使用註釋: · · ·... ...
  • 解構賦值 Destructuring Assignment ES6中可以通過一定的模式將數組或對象中的值直接賦值給外部變數,稱為解構 對象的解構賦值 對象解構過程中,外部變數名也可以與對象內部變數名不同,但此時不可以使用對象的縮寫形式 對象解構過程中,外部變數名也可以與對象內部變數名不同,但此時不可 ...
  • 什麼是Vue? Vue (讀音 /vjuː/,類似於view) 是一套用於構建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關註視圖層,不僅易於上手,還便於與第三方庫或既有項目整合。另一方面,當與現代化的工具鏈以及各種支持類庫結合使用時,Vue ...
  • 寫在前面得話: 這篇文章主要記錄了我是怎麼一步一步寫出俄羅斯方塊,整個代碼用的函數編程,主要是為了讓一些不熟悉es6, 面向對象寫法得 新手能更容易看明白,全部得代碼中都是一些js的基礎知識,很容易理解。要說有點麻煩的,那就是游戲過程中的各種檢測。但是只要你多思考,你就能理解代碼為什麼要那樣寫,你也 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...