搜尋
首頁web前端js教程JavaScript簡介_javascript技巧

本文不是參考手冊式文章,僅適用於對JS產生一個大致的認知,如需JS的詳細語法與應用請移步w3school

JavaScript是什麼?

JavaScript的誕生

在1995年前後,當時世界上的主流頻寬為28.8Kbps,現在世界平均下載頻寬為21.9Mbps(資料來自http://www.netindex.com)。當時的網民,每提交一次表單,都需要等待很久才能收到伺服器的回應,甚至很可能等了幾分鐘收到的卻是說缺少了某一項。為了改善使用者體驗,嵌入瀏覽器用戶端的能實現簡單表單判斷的腳本誕生了,這就是JavaScript。

JavaScript最早是工作於Netscape (網景公司)的 Brendan Eich為即將在1995年發行的NetscapeNavigator 2.0(NN2.0)開發的,當時叫做LiveScript。由於當時是和非常熱門的Sun公司合作的,為了趕上當時的潮流——Java語言,這門語言被命名為JavaScript。

JavaScript跟Java有什麼關係?

這也是外行人聽到JavaScript的第一個反應,也是這門語言被詬病最多的問題之一。

嚴格的說,沒有半毛錢關係。如果非要扯上關係,也許就是兩者的部分函數相同、物件導向思想、判斷結構、循環語句相同等等等等,但這些顯然不是Java的專利,而是程式語言的共識。

JavaScript的標準化及發展歷史

JavaScript推出時,使用者體驗更好的NN 瀏覽器主宰了瀏覽器市場,而微軟一直在追趕。在推出IE3的時候,微軟發布了VBScript並以JScript為名,實際上和Netscape的JavaScript沒有多大區別(用今天的話來講就是山寨)。面對微軟的競爭,Netscape和Sun公司將自己的JavaScript草案提交給ECMA(歐洲電腦製造商協會)對JavaScript進行了標準化,最後形成了ECMAScript 的第一個版本(ECMA-262)。

有趣的是,網景公司在標準化JavaScript之後,內部卻出現了問題,JavaScript的研究停滯,而微軟則趁機赶超,推出了IE4,內置了第一個遵循ECMA規範的JavaScript引擎,比NN提前了一年。再加上微軟系統逐步佔領電腦作業系統市場,其預先安裝的IE瀏覽器市場佔有率逐漸加大,NN也不斷被擠佔市場。然而,當微軟失去了最大的對手後,它就沒有了發展的動力,IE6~IE8,無論是介面渲染還是腳本執行,都互不相容,成為瀏覽器史上的一朵奇葩,也是前端開發者的噩夢。

複製程式碼 程式碼如下:

1.v1 1997年06月 首版
2.v2 1998年06月 格式修正,以使得其形式與ISO/IEC16262國際標準一致
3.v3 1999年12月 強大的正規表示式,更好的文字鏈處理,新的控制指令,異常處理,錯誤定義更加明確,數輸出的格式化及其它改變
4.v4 未完成...可能更明確的類別的定義,命名空間等等...
5.v5 2009年12月  新增“嚴格模式(strict mode)”,一個子集用作提供更徹底的錯誤檢查,以避免結構出錯。澄清了許多第3版本的模糊規範,and accommodates behaviour of real-world implementations that differed consistently from that specification。增加了部分新功能,如getters及setters,支援JSON以及在物件屬性上更完整的反射。

****2004年6月歐洲電腦製造商協會發表了ECMA-357標準,它是ECMAScript的一個擴延,它也被稱為E4X(ECMAScript for XML)。

JavaScript跟ECMAScript有什麼關係?

其實問題應該是JavaScript、JScript、ECMAScript三者有什麼關係。事實上,ECMAScript是總的規範,JavaScript和JScript都是依照這個規範開發的,和ECMAScript相容,但包含了超出ECMAScript的功能。不過,現在無論是哪一種,都通稱為JavaScript,只因其最早出現,影響力最大,名字流傳至今。

JavaScript能幹嘛?

網頁上面,一切需要邏輯處理的操作都可以由JavaScript來完成。譬如:

複製程式碼 程式碼如下:

•表單驗證
•動畫效果
•網頁遊戲
•倒數計時
•……

還有很多很多種應用,在這裡不贅述,相信大家學會這門語言之後會發現很多應用到的地方。

為什麼要學JavaScript?

1.因為你別無選擇,只有JavaScript可以控制所有常用的瀏覽器,而且JavaScript是世界上最重要的程式語言之一,學習web技術必須學會JavaScript。

2.JavaScript是一種美麗的語言,它很好,所以我們要學

JavaScript的定位

複製程式碼 程式碼如下:

1.JavaScript是一門輕量級的腳本語言,不需要編譯,由JavaScript解析引擎解析運行(一般指瀏覽器,當然不排除node之類的解析器)
2.JavaScript擁有非函數式語言特性、函數式語言特性和動態語言特性,它的語法非常靈活
3.JavaScript是一門物件導向的程式語言,在JavaScript界有一句話:萬物皆物件。其繼承是基於原型的繼承(我之前已經特別寫了一篇闡述原型繼承的文章)
4.JavaScript是一門類別C語言,所以只要學過C的人都很容易上手JavaScript
5.JavaScript的編寫不需要編譯器,而只需要文字編輯器(記事本就免了,這裡強烈推薦sublime text)

JavaScript有什麼?

現在大家用的JavaScript包含了三個大部分:DOM、BOM、ECMAScript(或稱為core js)。

DOM

這裡預設大家對HTML、CSS至少有所了解,如果是直接跳過HTML、CSS來看這篇文章的話,先看這裡。

DOM,文件物件模型(document object model)

我們知道,XHTML要求標籤必須閉合,巢狀必須正確。而標籤的嵌套,就產生了父子關係(或者說,祖先-後代關係)。而DOM,提供了大量的API,讓我們可以輕鬆操作DOM樹。後面我會開一篇文章專門講JS DOM。

使用DOM,我們能動態修改頁面內容,調整樣式等等,這也是JS多樣化的體現。

BOM

BOM,瀏覽器物件模型(brower object model)

和DOM類似,只不過主體變成了瀏覽器。瀏覽器同樣提供了大量的API,其中部分對JS開放,為我們提供了操作瀏覽器視窗的方法。

常見用處:

複製程式碼 程式碼如下:

1.彈出新瀏覽器視窗的能力;
2.移動、關閉和更改瀏覽器視窗大小的能力;
3.可提供WEB瀏覽器詳細資料的導航對象;
4.可提供瀏覽器載入頁面詳細資料的本機物件;
5.可提供使用者螢幕解析度詳細資訊的螢幕物件;
6.支持Cookies;
7.Internet Explorer對BOM進行擴充以包含ActiveX物件類,可以透過JavaScript來實作ActiveX物件。

ECMAScript core

也叫JS core,隨便怎麼叫,意思一樣,都是表示JS這門語言的核心組成,包括變數定義,垃圾回收,文法,作用域等等。和上述的DOM和BOM不同,它們只要求我們能使用這些API,而ECMAScript core則是這門語言的精髓所在,需要不斷鑽研。下一章將進一步講JS的語法。

JavaScript的使用

行內式

行內式即寫在標籤中的JavaScrip,例如我們在HTML中寫入:

複製程式碼 程式碼如下:


當我們點擊按鈕時,將會彈框顯示"be clicked"。
但注意,強烈不建議這麼做,因為這樣會給維護帶來巨大的麻煩,每次需要更改事件我們都需要先找到該元素,然後修改其javascript內容,而且這些javascript程式碼也無法重複使用。

另外,寫在標籤中的事件需要帶'on',而且標籤內只能透過事件引入js,而不能寫簡單的js表達​​式

內嵌式

內嵌式即在html的script標籤中寫js程式碼,做法是在HTML中新增一個script標籤,然後在標籤中間插入你的任意js程式碼,如下:

複製程式碼 程式碼如下:


   
       
   
    <script><br /> <span style="font-family: Arial, Helvetica, sans-serif;">var btn = document.getElementById("btn");<pre name="code" class="javascript">     onclick = function() {<br />             alert("be clicked");<br />         }<br /> </script>

用內嵌式的話,就比行內式自由很多,可以寫更多的程式碼,也可以避免引號的轉義問題,維護也變得更輕鬆。但問題也是存在的,這些程式碼只能適用於這個頁面,而無法被其他頁面使用。

外聯式

外聯式把以上兩種形式的缺點都解決了。做法如下:

先新建一個文件,把後綴改為.js。例如,我們新建一個click.js文件,然後把剛才寫的內嵌式裡面的js程式碼拷貝進去(注意不包括script標籤)

複製程式碼 程式碼如下:

var btn = document.getElementById("btn");
btn.onclick = function() {
     alert("be clicked");
}

然後在HTML中透過script標籤引入

複製程式碼 程式碼如下:


   
       
   
   

這樣的好處在於同樣的js程式碼可以被多個HTML頁面共享,壞處是增加了檔案數,增大了請求所需時間,所以應增強程式碼的複用性,並且最後要合併js檔案(把不同的js檔合併成一個js檔)

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

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

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。