摘要:介紹編程數(shù)據(jù)結(jié)構(gòu),算法,內(nèi)存分配表單驗(yàn)證需要一門(mén)語(yǔ)言可以直接運(yùn)行在瀏覽器中,來(lái)完成表單驗(yàn)證的功能。
Javascript介紹
編程(數(shù)據(jù)結(jié)構(gòu),算法,內(nèi)存分配)
表單驗(yàn)證
需要一門(mén)語(yǔ)言可以直接運(yùn)行在瀏覽器中,來(lái)完成表單驗(yàn)證的功能。
瀏覽器廠商
網(wǎng)景 firefox js 標(biāo)準(zhǔn) js解釋器 IE js js解釋器 google js js解釋器 ECMAScript
Javascript
1) ECMAScrpt 【js標(biāo)準(zhǔn)】(兼容器100%)
注釋 // 、/**/ 變量 操作符 流程控制語(yǔ)句 數(shù)組 對(duì)象 函數(shù) 正則表達(dá)式 ... 所有的JS解釋器都可以兼容ECMAScript 【lodash】 ECMAScript庫(kù)
2) DOM【js操作html的api】
Document object model 文檔對(duì)象模型 var dom = document.getElementsByTagName("input"); var dom = document.getElementsById("input_name"); dom.onclick = function(){} js語(yǔ)言 基礎(chǔ)語(yǔ)法 基礎(chǔ)庫(kù) 【jQuery】DOM庫(kù)
3) BOM【js操作瀏覽器的api】
Browser Object model 瀏覽器對(duì)象模型 alert()/prompt()/confirm() setInterval() setTimeout() XMLHttpReqeust ajax
解釋器
瀏覽器 【dom操作,動(dòng)畫(huà),表單校驗(yàn),ajax異步交互】
nodeJS【網(wǎng)絡(luò)編程(http模塊)數(shù)據(jù)庫(kù)操作(mysql),io文件(file),iot(...)】
google v8 => nodeJS
可以安裝linux window macos unix
學(xué)習(xí)方式
環(huán)境: ubuntu16.04
軟件: nodejs、vi(spf13)、git
使用sudoer用戶(hù)登錄
在家目錄中編寫(xiě)測(cè)試代碼
hello world
1) 編寫(xiě)代碼
$ vi hello.js
2) 執(zhí)行代碼
$ node hello 或 $ node hello.js
js特點(diǎn)
1) 解釋型語(yǔ)言
js -> nodejs(js解釋器)
2) 弱類(lèi)型語(yǔ)言
變量的數(shù)據(jù)類(lèi)型取決于值的數(shù)據(jù)類(lèi)型 var a ; a = 2; // a的數(shù)據(jù)類(lèi)型為number a = true; // a的數(shù)據(jù)類(lèi)型為boolean
3) 順序解釋執(zhí)行
4) 既可以作為前端腳本語(yǔ)言,也可以作為后端語(yǔ)言,取決于應(yīng)用平臺(tái)(瀏覽器/操作系統(tǒng))和使用的框架(dom、jquery/http、mysql、file)
Java
編譯型語(yǔ)言
java -> .class -> jvm(java解釋器)
強(qiáng)類(lèi)型語(yǔ)言
變量的數(shù)據(jù)類(lèi)型取決于聲明的數(shù)據(jù)類(lèi)型 int a ; a = 3; a = 8; 無(wú)符號(hào)整數(shù) char 有符號(hào)整數(shù) byte short int long 有符號(hào)小數(shù) float double 布爾類(lèi)型 boolean
數(shù)據(jù)類(lèi)型
基本數(shù)據(jù)類(lèi)型(用于保存單個(gè)值)
字符串類(lèi)型 string var a = "hello world" var a = "hello world" var a = "1"; var a = "{"name":"terry","age":12}"; 數(shù)字類(lèi)型 number var a = 3; var a = 3.1; var a = 3.0; var a = 011; var a = 0x11; var a = 1.3e10; var a = 1/0; 布爾類(lèi)型 boolean var a = true; var a = false; null 表示空對(duì)象 var gf = null; //經(jīng)常做,表示占位 undefined 表示未定義 var a; console.log(a); var b = undefined; //很少這么做 undefined 與null關(guān)系 undefined繼承null,所有undefined == null結(jié)果為true,但是null表示空對(duì)象,undefined表示未定義
引用數(shù)據(jù)類(lèi)型(保存多個(gè)值)
對(duì)象 var a = {name:"terry",age:12}; 數(shù)組 var arr = [1,2,3,4]; 函數(shù) 正則表達(dá)式 ...
內(nèi)存圖: 變量都維護(hù)在棧區(qū),基本數(shù)據(jù)類(lèi)型的值保存在棧區(qū),而引用數(shù)據(jù)類(lèi)型的引用地址保存在棧區(qū),值保存在堆區(qū)
變量
1) 變量聲明
var a; var b;
2) 變量初始化
a =3; b = "hello" var c = true; => var c; c = true;
3) 變量使用
var result = a + 1; console.log(b);
var a = 3;
a是一個(gè)基本數(shù)據(jù)類(lèi)型的變量,a的變量類(lèi)型是number,a是一個(gè)整數(shù)類(lèi)型
變量是指向一個(gè)值
基本數(shù)據(jù)類(lèi)型類(lèi)型的變量保存的單個(gè)值
4) 變量的提升
在所有代碼執(zhí)行之前,js解釋器會(huì)將js中所有的var聲明的變量提升。
編程語(yǔ)言
1) 語(yǔ)法
2) 系統(tǒng)庫(kù)
3) 解釋器
java -> jvm c -> linux js -> nodejs/瀏覽器
10.內(nèi)置函數(shù)
console.log() 如何判斷變量的數(shù)據(jù)類(lèi)型 typeof v var a = "hello world"; if((typeof a) == "string"){ } if(a == "null"){} 如何判斷一個(gè)變量是否是有窮的 isFinite(); 當(dāng)參數(shù)為無(wú)窮大或者小返回false 如何判斷一個(gè)變量是否是NaN isNaN() 當(dāng)參數(shù)為NaN返回true
操作符(運(yùn)算符)
1) 算術(shù)運(yùn)算符(number)
+ += - -= * *=
/ /= % %= var a = 3; var result = a + 3; result += 3; =》 result = result + 3; 2) 一元運(yùn)算符(number) + - var a = "12"; +a; -a; 經(jīng)常用于類(lèi)型轉(zhuǎn)換 ++ -- var a = 12; a++; ++a; //a = 14 var result = ++a+a++; /* a = 14; ++a //a = 15; result = a + a //result = 30 a++ //a = 16 */ console.log(a); console.log(result); 3) 邏輯運(yùn)算符(短路運(yùn)算符) && var age= 12; var gender = "male" age > 18 && gender == "male" 并且,當(dāng)?shù)谝粋€(gè)表達(dá)式為假,就可以確定整個(gè)表達(dá)式結(jié)果為假,這時(shí)候無(wú)需判斷第二個(gè)表達(dá)式,將第一個(gè)表達(dá)式運(yùn)算結(jié)果返回;當(dāng)?shù)谝粋€(gè)表達(dá)式為真,整個(gè)表達(dá)式的結(jié)果取決于第二個(gè)表達(dá)式,將第二個(gè)表達(dá)式運(yùn)算結(jié)果返回。 var result = "hello" && 12; || ! !true false !false true !!true true !!"hello" true 將其他數(shù)據(jù)類(lèi)型轉(zhuǎn)化為boolean 4) 比較運(yùn)算符 == != 比較兩個(gè)變量的值,當(dāng)值的數(shù)據(jù)類(lèi)型不一樣的時(shí)候,先轉(zhuǎn)換為相同類(lèi)型的然后再比較 當(dāng)比較引用數(shù)據(jù)類(lèi)型的時(shí)候,比較的是內(nèi)存地址 === !== 先比較兩個(gè)變量的數(shù)據(jù)類(lèi)型,數(shù)據(jù)數(shù)據(jù)類(lèi)型不一樣,返回false,否則繼續(xù)比較值 1 == "1" //true 1 === "1" //false > >= < <= 5) 三目運(yùn)算符 exp1 ? exp2 : exp3 當(dāng)exp1為真,返回exp2,否則返回exp3 var age = 22; var result = age >= 18 ? "成年人":"未成年人" => var result; var age = 22; if(age >= 18){ result = "成年人"; } else { result = "未成年人"; } 6) 拼接運(yùn)算符 字符串與任何其他數(shù)據(jù)類(lèi)型相加都是字符串拼接 "terry" + 2 //"terry2" 如何將其他數(shù)據(jù)類(lèi)型轉(zhuǎn)換為字符串 true+"" 7) 賦值運(yùn)算符 var a = 3 + 1; 將3+1的結(jié)果賦值給a #8) 位運(yùn)算符(number, 轉(zhuǎn)換為二進(jìn)制再運(yùn)算) ^ & | 1&2
類(lèi)型轉(zhuǎn)換
string
String(v) +"" v.toString() //不適用于null,undefined
boolean
Bollean(v) !!v null false undefined false NaN false Infinite true 0 false "" false {} true
number
Number(v) +v -(-v) true 1 false 0 undefined NaN parseInt(v) v為字符串 "12.3" 12 "12abc" 12 "a12abc" NaN parseFloat(v) "12.3" 12.3 "12abc" 12 "a12abc" NaN
表達(dá)式
操作符 + 操作數(shù)
表達(dá)式以";"作為結(jié)束
var a = 3;
var result = a>3;
...
流程控制語(yǔ)句
分支語(yǔ)句
1) if else
if(exp1) { exp2 } exp3 exp1可以為任意數(shù)據(jù)類(lèi)型,在執(zhí)行的時(shí)候先判斷exp1為true還是false,如果為true執(zhí)行exp2,exp3始終都會(huì)執(zhí)行 if(exp1){ exp2 } else { exp3 } 如果exp1為true,執(zhí)行exp2,否則執(zhí)行exp3 if(exp1){ exp2 } else if(exp3){ exp4 } else { exp5 } 如果exp1為true,執(zhí)行exp2;如果exp1為false,判斷exp3,如果exp3為true,執(zhí)行exp4,否則執(zhí)行exp5 課堂作業(yè) var day = 3; 1 今天是周一 2 今天是周二 ... 6,7 今天是周末
2) switch
var day = 3; switch(day){ case 常量1: 代碼塊1 break; case 常量2: 代碼塊2 break; ... default : 代碼塊n } day === 常量1 =》 代碼塊1 day === 常量2 =》 代碼塊2 ... 代碼塊n 注意: 1. case代碼塊中的break不能省略 2. default可以放在代碼塊的上部,中部,底部,如果放在上部或者中部,一定不能省略break 3. 變量與常量對(duì)比的時(shí)候使用"==="
2. 循環(huán)語(yǔ)句 a b c d 變量 拼音 數(shù)據(jù)類(lèi)型 漢字 操作符 語(yǔ)法 表達(dá)式 成語(yǔ),古詩(shī)詞, 史記【文言文】,文章 流程控制語(yǔ)句 寫(xiě)作,寫(xiě)字
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/110042.html
稍微整理了一下自己平時(shí)看到的前端學(xué)習(xí)資源,分享給大家。 html MDN:Mozilla開(kāi)發(fā)者網(wǎng)絡(luò) SEO:前端開(kāi)發(fā)中的SEO css 張?chǎng)涡瘢簭場(chǎng)涡竦牟┛?css精靈圖:css精靈圖實(shí)踐 柵格系統(tǒng):詳解CSS中的柵格系統(tǒng) 媒體查詢(xún):css媒體查詢(xún)用法 rem布局:手機(jī)端頁(yè)面自適應(yīng)布局 移動(dòng)前端開(kāi)發(fā)之viewport的深入理解:深入理解viewport 淘寶前端布局:手機(jī)淘寶移動(dòng)端布局 fl...
摘要:四則運(yùn)算編譯器,雖然說(shuō)功能很簡(jiǎn)單,只能編譯四則運(yùn)算表達(dá)式。再?gòu)?fù)雜的編譯器再簡(jiǎn)單的編譯器,功能上是差不多的,只是復(fù)雜的編譯器實(shí)現(xiàn)上會(huì)更困難。每一章都是理論與實(shí)踐結(jié)合的經(jīng)典,從計(jì)算機(jī)硬件知識(shí)到軟件體系,再到編譯原理和操作系統(tǒng)。 四則運(yùn)算編譯器,雖然說(shuō)功能很簡(jiǎn)單,只能編譯四則運(yùn)算表達(dá)式。但是編譯原理前端部分幾乎都有涉及,詞法分析,語(yǔ)法分析,還有代碼生成。 再?gòu)?fù)雜的編譯器、再簡(jiǎn)單的編譯器,功能...
摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...
摘要:一般的程序,是無(wú)法直接執(zhí)行的,因?yàn)橹荒茏R(shí)別機(jī)器指令。所以要想執(zhí)行一個(gè)程序,首先要將高級(jí)語(yǔ)言編寫(xiě)的程序翻譯為匯編代碼,再將匯編代碼翻譯為機(jī)器指令,這樣才能識(shí)別并執(zhí)行。 編譯器 編譯器是一個(gè)程序,作用是將一門(mén)語(yǔ)言翻譯成另一門(mén)語(yǔ)言。 一般的程序,CPU 是無(wú)法直接執(zhí)行的,因?yàn)?CPU 只能識(shí)別機(jī)器指令。所以要想執(zhí)行一個(gè)程序,首先要將高級(jí)語(yǔ)言編寫(xiě)的程序翻譯為匯編代碼,再將匯編代碼翻譯為機(jī)器指令...
摘要:個(gè)人前端文章整理從最開(kāi)始萌生寫(xiě)文章的想法,到著手開(kāi)始寫(xiě),再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫(xiě)好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開(kāi)始萌生寫(xiě)文章的想法,到著手...
閱讀 3313·2021-11-23 09:51
閱讀 1086·2021-08-05 09:58
閱讀 728·2019-08-29 16:05
閱讀 1031·2019-08-28 18:17
閱讀 3092·2019-08-26 14:06
閱讀 2789·2019-08-26 12:20
閱讀 2229·2019-08-26 12:18
閱讀 3120·2019-08-26 11:56