JavaScript 藝術之美(一)序言和 JavaScript 語法

来源:https://www.cnblogs.com/biandong/archive/2018/04/17/8869816.html
-Advertisement-
Play Games

零、前言 錯過了今年雙十一、雙十二噹噹圖書網的半價優惠,挺遺憾,但不買書心裡又癢癢的,後來在12月13號晚上以79折買了一些JavaScript的經典書籍:《JavaScript DOM編程藝術(第2版)》、《 JavaScript高級程式設計(第3版)》、《鋒利的jQuery(第2版)》和幾本其他 ...


零、前言

錯過了今年雙十一、雙十二噹噹圖書網的半價優惠,挺遺憾,但不買書心裡又癢癢的,後來在12月13號晚上以79折買了一些JavaScript的經典書籍:《JavaScript DOM編程藝術(第2版)》、《 JavaScript高級程式設計(第3版)》、《鋒利的jQuery(第2版)》和幾本其他編程的書,因為之前JavaScript掌握得不是很好,所以得靠著幾本書來提高我對JavaScript的掌握度。
要學會一門技術的途徑挺多的:學校授課、網路(線上)視頻課程、看相關書籍等等,我比較喜歡看書和逛相關博客,視頻課程次之(雖然我從未把一套網路課程學個徹底),我的總結是這樣的:看視頻效果是最好的,但是不做筆記和練習代碼基本上是學多少忘多少,再就是看視頻時會犯困和走神等等(好在可以回放),看書雖然有些地方會一時半會兒無法理解,不過多看幾遍就能看懂的,大不了上某度找找答案何嘗不是一件好事?看書好在可以在書上勾勾畫畫、做做筆記,忘了隨時想翻就翻,還可以當一本新華字典用,先用2.0倍加速把視頻過一遍,在用0.5倍速度把書里的相關章節嚼上幾遍,嚼的同時上機實戰,這門技術不掌握也難啊(理想中狀態)!
扯了這麼多,回到正題,最近我對前端的熱度直線增長,提高我的JavaScript水平是必須的,通過看書來提高是必須的,哪叫我買下了這些書呢,記筆記和練習也是必須的,因為買不起筆記本也懶得動筆,所以我把博客當成我的學習筆記本,把從書里(也包括相關博客、視頻)學到的JavaScript系列知識總結整理後寫進博客,同時也同步到github里,方便日後查閱和鞏固,也達到了共用的目的。然後我給我的這系列JavaScript博文暫時命名為“JavaScript藝術之美”,以章節的形式來總結知識,然後會不定期的更新系列博文以及糾正之前博文中的錯誤和新方法。當然這系列博文也會通過目錄方式用超鏈接聯繫起來方便跳轉,
每次更新的博文也會同步到Github上:https://github.com/bcdon/JavaScript_study

一、JavaScript 簡史

百度百科很全,移步:JavaScript 百度百科

二、在 HTML 中插入 JavaScript

// 法1.直接使用
<script>...</script>
// 法2.使用外部文件
<script src="myScript.js"></script>
// 法3.老傳統
<script type="text/javascript">...</script>
  • 現代瀏覽器以及 HTML5 中的預設腳本語言是 JavaScript,所以沒必要設置 type="text/javascript"。
  • script 標簽可位於 HTML 的 body 或 head 部分,最好的做法是放在html文檔最後,</body> 之前。

三、註釋

// 法1.單行註釋
/* 法2.多行註釋第一行
    第二行 */
<!-- 法3.html風格,單行註釋,一般不推薦

四、變數

  • 人們把那些會發生變化的東西稱為變數,把值存入變數的操作稱為賦值,使用 var 關鍵詞來聲明變數。
  • JavaScript允許直接對變數賦值而無需事先聲明,如果對某個變數賦值之前未聲明,賦值操作將自動聲明該變數。
// 變數聲明
    var name1;
    var name2;
// 用一條語句一次聲明多個變數
    var name1, name2;
// 先聲明後賦值
    var name1, name2;
    name1 = "value1";
    name2 = "value2";
// 一石二鳥,聲明同時賦值
    var name1 = "value1";
    var name2 = "value2";
// 也可以這樣,最佳做法
    var name1 = "value1", name2 = "value2";
    
  • 在JavaScript 里變數和其他語法元素的名字都是區分字母大小寫的
  • JavaScript 語法不允許變數名中包含空格或除美元符號"$"外的標點符號。
  • JavaScript 變數名允許包含字母、數字、下劃線和美元符號“$”,第一個字元不允許是數字,能以 $ 和 _ 符號開頭(不過我們不推薦這麼做)

駝峰式和下劃線規範:

聲明變數用下劃線鏈接多個單詞,函數名、方法名和對象屬性名命名首選駝峰格式

五、數據類型

在聲明變數的同時聲明變數的數據類型,這種做法稱為 類型聲明,必須明確類型聲明的語言稱為強類型語言,JavaScript不需要進行類型聲明,因此它是一種弱類型語言。

1.字元串

字元串由零個或多個字元構成,必須包在單引號或雙引號內:

var mood = "happy";
var mood = 'happy';

有的情況下需要在字元串里對字元進行轉義,在JavaScript里用反斜線對字元串進行轉義:

var mood = 'don\'t ask';

2.數值

JavaScript 只有一種數字類型。數字可以帶小數點(浮點數),也可以不帶(整數):

var x1 = 34.00;        //使用小數點來寫
var x2 = 34;              //不使用小數點來寫

在有關數值的前面加上一個減號“-”表示他是一個負數:

var x1 = -34.00;          //負浮點數
var x2 = -34;             //負整數

極大或極小的數字可以通過科學(指數)計數法來書寫:

var y = 123e5;             // 12300000
var z = 123e-5;           // 0.00123

3.布爾值

布爾(邏輯)只有兩個可選值:true 或 false。

var x = true;
var y = false;

六、數組

數組是指用一個變數表示一個值的集合,集合中的每個值都是這個數組的一個元素。
數組可以用關鍵字 Array 聲明,同時還可以指定數組初始元素個數(數組的長度):

var my_array = Array(4);      //指定長度,不必須
var my_array1 = Array();      //不指定長度

向數組中添加元素操作稱為填充:

var cars = new Array();
cars[0] = "Audi";    //數組的下標是從0開始計數的
cars[1] = "BMW";
cars[2] = "Volvo";

聲明數組的同時對他進行填充,用逗號把各個元素隔開:

var cars = new Array("Audi","BMW","Volvo");

甚至用不著明確表明是在創建數組,需用一對方括弧把各個元素的初始值括起來:

var cars = ["Audi","BMW","Volvo"];

數組元素不必非得是字元串:

var cars = ["Audi", 1998, false];   // 3種數據類型,依次為 字元串、數值、布爾值
// 還可以是變數
var name1 = "John";
cars[0] = name1;  // 把cars數組的第一個元素賦值為字元串"John"
// 數組元素的值還可以是另一個數組的元素
var name1 = ["Audi","BMW","Volvo"];
cars[1] = name1[2];      // 把name1數組的第3個元素值"Volvo"賦給cars的第二個元素

數組還可以包含其他數組,數組中的任何一個元素都可以把一個數組作為它的值:

var cars = ["Audi", 1998, false];
var name1 = [];
name1[0] = cars; // name1數組的第一個元素值是cars數組

通過name1數組獲得cars數組裡的某個元素:name1[0][0] 的值是字元串"Audi",name1[0][1] 的值是數值 1998,name1[0][2] 的值是布爾值 false。

關聯數組:

可以通過在填充數組時為每個新元素明確地給出下標來改變這種預設行為,在新元素給出下標時不必局限於使用整數數字,可以用字元串:

var cars = new Array();
cars["name"] = "Audi";
cars["year"] = 1998;
cars["living"] = false;

在JavaScript中,所有的變數實際上都是某種類型的對象。

七、對象

JavaScript 中的所有事物都是對象:字元串、數字、數組、日期,等等。對象是擁有屬性和方法的數據,對象也是使用一個名字表示一組值,每個值都是對象的一個屬性:

person=new Object();   // 創建對象使用Object關鍵字
person.firstname="Bill";  // 使用點號獲取屬性
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";

花括弧語法創建對象:

var person={firstname="Bill",lastname="Gates",age=56};

屬性是與對象相關的值,方法是能夠在對象上執行的動作。
下麵用person對象填充cars數組,使用 cars[0].firstname得到值"Bill":

var cars = new Array();
var person={firstname="Bill",lastname="Gates",age=56};
cars[0] = person;

下麵將cars數組也聲明為對象:

var cars = {};
var person={firstname="Bill",lastname="Gates",age=56};
cars.firstCars = person;

使用 cars.firstCars.firstname得到值"Bill",依次類推。


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

-Advertisement-
Play Games
更多相關文章
  • css之路 ...
  • Web界面設計是由Bill Scott編著、電子工業出版社出版的一部圖書,在Web已經進入嶄新的時代的今天,界面的設計顯得非常重要,本書就是基於獨一無二的Web環境下、在創建豐富體驗的過程中設計Web界面的最佳實踐、模式和原理。 本書既是一本Web界面設計指南,又是一本Web界面實例參考,適合Web ...
  • 不藉助插件怎樣在移動設備上實現動畫效果?怎樣快速搭建HTML電子郵箱?怎樣製作跨PC和移動設備顯示的應用界面?怎樣利用最新的JavaScript框架提高應用的響應速度?怎樣有效利用CoffeeScript和Sass開發和維護客戶端代碼?如何發揮Git管理版本庫的功效?本書包含42種Web開發技巧,從 ...
  • 通過學習本書,讀者很快就能明白為什麼PHP、Apache和MySQL會迅速成為開發動態網站最流行的方式,本書將為讀者理解這3個核心組件如何獨立工作和協同工作奠定良好的基礎,引導讀者充分利用它們提供的各種功能。 Web開發入門經典:使用PHP6、Apache和MySQL首先通過兩個項目介紹瞭如何利用這 ...
  • Web性能權威指南是谷歌公司高性能團隊核心成員的權威之作,堪稱實戰經驗與規範解讀完美結合的產物。《Web性能權威指南》目標是涵蓋Web開發者技術體系中應該掌握的所有網路及性能優化知識。全書以性能優化為主線,從TCP、UDP和TLS協議講起,解釋瞭如何針對這幾種協議和基礎設施來優化應用。然後深入探討了 ...
  • 本例子是直接寫在一個react組件中的 不過方法還是原生的方法 不多說 直接上代碼 比如我們有一個 url: 'www.zhangfeng.com?id=1&name=zhangfeng&age=18' handleUrl() { // 獲取一個一個url後面的參數 這裡用到了字元串的截取方法sub ...
  • 昨天一朋友和我聊到JS中的非同步和同步, 後來從非同步和同步的問題中得出了函數的另一面, 覺得挺不錯, 特此分享一下 ==== 追夢子: 聊天是同步還是非同步 小A: 非同步 小A: 和你聊還可以和別人聊 追夢子: 那得看怎麼聊, 小A: 那你也沒法說我錯 追夢子: 你要是等另一個人回答後再回,也就是你一句 ...
  • n CSS簡介 CSS:Cascading Style Sheets 層疊樣式表 CSS的主要目的:是給HTML標記添加各種各樣的表現(格式、樣式)。比如:文字樣式、背景、文本樣式、鏈接樣式。 提示:CSS是給HTML標記加的樣式:JS是給HTML標記加的行為。HTML標記是最先出現的。 HTML超 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...