JavaScript--我發現!原來你是這樣的JS(1)

来源:http://www.cnblogs.com/Ry-yuan/archive/2017/09/06/7482599.html
-Advertisement-
Play Games

一、前言: 前段時間看紅寶書(JavaScript高級程式設計),但沒有計劃的去看,也沒有做詳細的筆記,讀了之後有點空虛,感覺不對勁啊,學的東西很難記住,印象不深啊,有種挫敗感,作前端的js都學不好怎麼做前端。後端都學js了,你說死不死。 因此吾閱之,再閱之,並決心記之以博客,以增強印象,作得讀書筆 ...


一、前言:

前段時間看紅寶書(JavaScript高級程式設計),但沒有計劃的去看,也沒有做詳細的筆記,讀了之後有點空虛,感覺不對勁啊,學的東西很難記住,印象不深啊,有種挫敗感,作前端的js都學不好怎麼做前端。後端都學js了,你說死不死。

因此吾閱之,再閱之,並決心記之以博客,以增強印象,作得讀書筆記,以便日後翻看及供大家參閱與討論。

溫馨提示:筆記言辭會有主觀色彩,知識重點記錄。

二、JavaScript歷史

  • 起源:話說在上世紀末1995年,Netscape公司推出Navigator瀏覽器。人家公司有追求,不單單能實現靜態HTML,人家還想要有動態效果,還想著能去處理表單的驗證,不要老是等到後臺那邊才知道表單輸入合不合法,特別在那個年代,一次一等就上分鐘,現在我們等上個十秒都想關掉它是不是,嘴邊還吐槽著什麼破網站。

  • 動手:有目標就去做,Netscape公司大牛多,Brendan Eich 用10天(網上說10天)就把JavaScript搞了出來,剛出來時叫LiveScript,為了蹭蹭當紅明星Java熱度,就改成JavaScript了,所以事實上他們兩沒啥關係。

  • 競爭:看到Netscape公司有了js,微軟感覺不行啊,我的IE要被幹掉啊,同時也感到js的前途無量,於是弄了個名為JScript的JavaScript的實現。

  • 標準: Netscape和微軟競爭出現的js導致版本的不一致,隨著業界的擔心,JavaScript的標準化被提上議事日程。ECMA組織就去乾這事,最後在弄出97年了ECMAScript作為標準。這裡ECMAscript和JavaScript可以看做表達同一個東西

三、ECMAScript

ECMAScript(以下簡稱ES)由ECMA-262制定,ES的主要是語言的語法基礎,是一種標準的存在。如果硬要區分ES和JS,ES是語言基礎標準,而JS就是在這標準的基礎上所實現的語言。

關於ES版本:ES從1997年制定好到現在已經經歷很多版本,前面的版本都是一些小的修改。重要版本:

  • ES3,第三個版本,是對標準的第一次真正意義上修改
  • 2009年的ES5是當前各大流行瀏覽器所支持的
  • 2015年出版的ES6也流行起來。
  • 2015年後的每年也出版本,但瀏覽器還沒能夠支持。

四、JavaScript實現

javascript由三部分組成:

1.ECMAScript :核心部分,是js的語法基礎,後面會繼續寫其語法。
2.DOM(文本對象模型) :用於操作HTML文檔的應用編程介面。關於DOM:

  • DOM的出現使得動態HTML(DHTML)得以實現,可以不用重新載入頁面而改變網頁的外觀和內容。
  • DOM帶來的問題:主要是相容性方面,Netscape和微軟各抒己見,使得瀏覽器不相容的局面產生。未解決此問題W3C著手規劃DOM
  • DOM級別:DOM1,DOM2,DOM3 ,這裡的級別相當於DOM的版本一樣,代表著DOM在不斷的完善,現在最新是DOM3

3.BOM(瀏覽器模型) :使用BOM可以控制瀏覽器顯示的頁面以外的部分

五、JavaScript使用:

(1)標簽屬性:在網頁中使用js關鍵的是使用<script>標簽,其有6個屬性:

  1. async:可選,表示立即下載腳本,但不妨礙頁面中的其他操作。也就是非同步腳本,只適用於外部腳本文件。
  2. defer:可選,表示腳本可以延遲到文檔完全被解析和顯示後在執行。也就是延遲腳本,只適合與外部腳本文件。
  3. src:可選,表示包含要執行代碼的外部文件。
  4. type:預設text/Javascript。預設執行js,可以不用指定。
  5. charset:可選,表示通過src屬性指定代碼的字元集,大多數瀏覽器會忽略它的值,很少人使用。
  6. language:已廢棄
    常用就前4個

(2)使用:使用<script > :有兩種操作:

1. 直接在標簽內寫入代碼,即在html中內嵌代碼,這種方式不推薦。如:
<script>
 function helloWorld(){
    alert("hello world!");
 }
 helloWorld();
</script>
2. 另一種通過src屬性引入外部的文件。
<script src="js/hello.js"></script>

儘可能使用外部引用js文件,優點:

  • 可維護性:內嵌代碼在html中,維護困難且可讀性差,在js單獨的文件中維護將輕鬆的多。

  • 可緩存:瀏覽器可以根據具體的設置緩存鏈接的所用外部js文件

  • 適應未來:通過外部文件來包含js無須對XHML的特別處理和註釋hack。HTML和XHTML的包含文件的語法相同。

特別註意:<script>在使用了src屬性後,不要在內嵌代碼,此時的內嵌的代碼不會被執行。只會執行src對應文件的代碼。

(3)位置:關於<script> 在HTML文檔中的位置:

在HTML4中規定<script> 標簽可以放在 <head><body> 標簽內。
由於瀏覽器解析HTML文檔是由上到下,且在遇到<script> 標簽後會先解析和執行js代碼,並中斷HTML的載入,所以放在<head> 標簽中是會使得HTML文檔可視內容中斷載入。
畫重點:所以<script> 標簽的位置首考慮放在<body> 標簽底部。例如:

<html>
    <head>
       <title>hello js</title>
    </head>
    <body>
        <p>hello js!</p>
        <!-- js文件放在body底部 -->
        <script src="example.js"></script>
    </body>
</html>

六、JavaScript的平穩退化方案

什麼是平穩退化:就是有些瀏覽器不支持js,當然現在幾乎沒有瀏覽器這麼菜啦,還有就是js功能被禁用。這時就需要沒有js的情況下你的網頁怎麼友好一點交互,不會搞得太難看,太尷尬。
使用<noscript> 標簽,應用場景:

  • 瀏覽器不支持JavaScript
  • 瀏覽器支持腳本,但腳本被禁止了

例子:當瀏覽器不支持js或禁用js時就會顯示出noscript標簽中的內容,若瀏覽器能執行js則noscript就被隱藏。

<html>
    <head>
        <script src="example.js"></script>
    </head>
    <body>
        <noscript>
         <p>本頁面需要瀏覽器支持JavaScript</p>
        </noscript>
    </body>
</html>

七、後記

這是看紅寶書的第一篇筆記,涵蓋了一二章的內容,都是知識點。本系列博客將會繼續更新,一同和大家分享分享。如果覺得寫得好就給個贊吧。謝謝大家。
分享一句話:時間不會停下來等你,我們現在過的每一天,都是餘生中最年輕的一天。


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

-Advertisement-
Play Games
更多相關文章
  • Lucene 是一個開放源代碼的全文檢索引擎工具包,但它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟體開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為 ...
  • 最近有個新項目用java做的,老項目是asp.net,介面傳輸需要des加解密,網上查了些資料,大多數不能拿來就用,自己經過調試加工了一下,具體代碼如下: 密鑰一定是8位 對應java的方法如下: package com.testspring; import javax.crypto.Cipher; ...
  • 16 complete.cases( ) complete.case()可以判斷對象中是否數據完全,然後返回TRUE, FALSE 這一函數在去除數據框中缺失值時很有用。 17 get() get()函數接受一個代表對象名字的字元串參數,然後返回該對象的內容。 省略了會出錯 ...
  • ((半個)智商題,主要難度在於實現) 題意:有一棵n個結點組成的樹,其根是編號為1的結點。對於每一個結點,生成從根結點走到這個結點的路徑(包括自身),選擇路徑上的一個點或者不選擇任何點,使得其它點的最大公約數最大。每一個結點要分開考慮。 曾經錯誤做法: ans[x][0]表示走到x點不選擇任何點的最 ...
  • 租房頁面如圖: 代碼如下: <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>租房子</title> <script src="bootstrap/js/jquery-1.11.2.min.js"></script> //引入boo ...
  • 0. 世界上第一個網站 1990年12月20日,這一天對於現在的互聯網來說意義非凡。歐洲核子研究組織(CREN)的科學家Tim Berners-Lee在一臺NeXT電腦上啟動了世界上的第一個網站(當然當時僅能Tim Berners-Lee自己訪問),這臺電腦至今仍保留在CREN,但當年那個網站已經不 ...
  • [toc] 集合 集合與數組 數組 (可以存儲基本數據類型)是用來存現對象的一種容器,但是數組的長度固定,不適合在對象數量未知的情況下使用。 集合 (只能存儲對象,對象類型可以不一樣)的長度可變,可在多數情況下使用。 註:數組我在前面的博客講了大家可以看下 集合中介面和類的關係 Collection ...
  • 水平居中佈局 優點:相容性好; 不足:需要同時設置子元素和父元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ini ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...