js的歷史
Nombas與ScriptEase
大概在 1992 年,一家稱作 Nombas 的公司開發了一種叫做 C 減減(C-minus-minus,簡稱 Cmm)的嵌入式腳本語言,并將這個腳本語言捆綁在一個可以嵌入到瀏覽的2的共享軟件中,代表了第一個在萬維網上使用的客戶端語言。后來由于mm聽起來比較消極,Nombas又將Cmm的名字修改為ScriptEase.雖然Nombas如今在互聯網行業已經銷聲匿跡,但是它的理念卻成為因特網的一塊重要基石。
Netscape與JavaScript
當網上沖浪越來越流行時,對于開發客戶端腳本的需求也逐漸增大。那時,大部分因特網用戶還僅僅通過 28.8 kbit/s 的調制解調器連接到網絡,即便這時網頁已經不斷地變得更大和更復雜。而更加加劇用戶痛苦的是,僅僅為了簡單的表單有效性驗證,就要與服務器進行多次地往返交互。設想一下,用戶填完一個表單,點擊提交按鈕,等待了 30 秒的處理后,看到的卻是一條告訴你忘記填寫一個必要的字段。
為了解決這一問題,NetScape公司的 Brendan Eich 開始為即將在1995年發行的 Netscape Navigator 2.0瀏覽器開發一款名為LiveScript的腳本語言,最終NetScript與Sun公司合作完成了LiveScript,并且將這種語言命名為JavaScript.
微軟與JScript
在JavaScript 1.1 版本發布時,微軟公司也決定進軍瀏覽器行業。微軟公司在推出的IE 3.0上搭載了一個JavaScript的克隆版,并且命名為JScript.
ECMAScript
在微軟進入后,有 3 種不同的 JavaScript 版本同時存在:Netscape Navigator 3.0 中的 JavaScript、IE 中的 JScript 以及 CEnvi 中的 ScriptEase.和其他編譯語言不同的是,JavaScript 并沒有一個標準來統一其語法或特性,而這 3 種不同的版本恰恰突出了這個問題。
1997 年,JavaScript 1.1 作為一個草案提交給歐洲計算機制造商協會(ECMA).ECMA指派由來自 Netscape、Sun、微軟、Borland 和其他一些對腳本編程感興趣的公司的程序員組成的第 39 技術委員會(TC39) 錘煉出了 ECMA-262,該標準定義了名為 ECMAScript 的全新腳本語言。
總結:Javascript是ECMAscript的一個實現 并且在此基礎上擴展了DOM和BOM
js的組成
ECMAscript: JavaScript的核心,描述了語言的基本語法和數據類型,ECMAScript是一套標準,定義了一種語言的標準與具體實現無關
DOM:(document object model 文檔對象模型)一套操作頁面元素的API
BOM:(browser object model 瀏覽器對象模型)一套操作瀏覽器功能的API
javascript是什么?
javascript是在運行在客戶端的腳本語言
客戶端:客戶端是相對于服務器而言的,在這里先簡單理解為瀏覽器 瀏覽器就是一個客戶端軟件,瀏覽器從服務器上將資源(html,css,js,圖片等)請求下來 并且在本地利用瀏覽器去解析這些資源 服務器本質上也是一臺電腦。用來接收客戶端發過來的請求,并處理請求。同時存儲數據 讀取數據等操作
腳本語言:不需要編譯 讀取一句 解析一句 一句報錯 下一句不會繼續執行 執行過程:源代碼 - 預解析 - 運行 編譯語言:需要編譯 編譯一旦出錯 整個程序都不會運行 執行過程:源代碼 - 編譯后的字節碼文件 - 運行
javascript的作用
1、網頁特效 2、表單驗證 3、服務端的JS (node.js) 4、命令行工具 (node.js) 5、app 6、游戲開發
總結:JS無所不能,我們學習的方向主要針對的是web頁面
變量
概念:一塊被命名的運行存儲空間
運行存儲空間:電腦應用程序在運行的時候開辟的內存空間
為什么要命名:方便程序員使用
使用
1.先聲明后賦值????????var a; ????a=1;
2.聲明并賦值????????????var a=1;
3.一次聲明多個,單獨賦值????var a,b,c; ???? a=1;???? b=2;???? c=3;
4.不聲明直接賦值,屬于不遵守使用規范,但不會報錯,堅決不推薦;
5.不聲明直接使用,會報語法錯誤。
規則:? ? 只能為字母、數字、下劃線和$符號組成,且不能以數字開頭;
規范
1.變量名必須有意義
2.遵守駝峰式命名法 首字母小寫,后面單詞首字母大寫 例如:userName userPassword
注意
1.不能使用關鍵字和保留字命名
?關鍵字:對于JS來說有特殊意義的字符 [查詢保留字和關鍵字]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords
? 保留字:現在沒有意義 但是保留在那邊 以后可能會有意義的字符
交換變量值
1.借助第三個容器臨時保存
2.運算(了解即可 基本不用)????
????var a = 10;????
????var b = 20;????
????a = a + b;
????b = a - b;
????a = a - b;
注釋
1、單行注釋?
? ? ? // 用在代碼上?
2、多行注釋?
????/*?多行注釋
*內容
*內容
?*/ 用在說明文檔上
輸出語法
1.調用彈出框功能alert('Hello world');
2.調用對話框功能prompt('請輸入你的名字');
3. 確認框confirm('Are you sure?');
4. 向頁面輸入對應的值document.write('歡迎光臨');
5. 向控制臺輸出日志console.log('我是出現在控制臺 ,一般用于后期調試代碼');
數據類型
基本數據類型
Number:數字類型
轉換為數字類型:
1.parseInt();將可以轉化的其他類型的數據的小數點前的轉化為數字(整數),如果內部包含其他字符,則轉化第一個非數字類型字符前的數字。
2.parseFloat();將可以轉化的其他類型的數據轉化為數字(小數),如果內部包含其他字符,則轉化第一個非數字類型字符前的數字。
3.Number();轉化之前要先掃描一下當前的數據,如果包含不是數字類型的字符,則轉化結果為NaN。如果全是數字類型的字符,則轉化為整數
4.黑科技(隱式轉換):在數據前添加一個“+”
String:字符串類型
轉化為字符串
1.數據.toString();nunll和undefined不能轉化
2.String(數據);
????null轉化結果為null
????undefined轉化結果為undefined
3.數據+“ ”;
一個字符串和任何一個數據相加,其結果都是字符串
null:空值,賦值給變量可用于清空該變量
undefined:只聲明而未賦值的變量,默認值為undefined
boolean:布爾類型
轉化為布爾類型
轉化為false的值有:0 null undefined “ ” false 不等價的表達式 NaN
為什么要進行數據類型轉換
不同的數據類型的數據在進行運算時,產生的結果也不一樣,為了方便數據的運算,必要的時候要進行數據轉換。
復雜數據類型
object
array:數組
function:函數
算術運算符
1.加、減、乘、除、取模
2.加號口訣:數值相加 字符相連