JS基礎(chǔ)第一節(jié)

一掖棉、簡單了解和基礎(chǔ)知識

1.js引入方式

第一種:直接在body標(biāo)簽下面引入js文件或者直接在下面寫js代碼飘言;

第二種:直接在body標(biāo)簽里面引入js文件或者直接在里面寫js代碼;

第三種:直接在head標(biāo)簽里面引入js文件或者直接在里面寫js代碼;但是因為代碼的執(zhí)行順序是從上到下的颓屑,避免js代碼最先被執(zhí)行仗岸,所以要在script標(biāo)簽里面加上window.onload=function(){},在這個里面寫入代碼。

2.js注釋

單行注釋的雙斜杠//

多行注釋/****/

注釋的作用:節(jié)約交流和閱讀成本

3.用于代碼調(diào)試

console.log()和alert()都可以用于調(diào)試代碼奕删,但是alert會阻斷線程的執(zhí)行俺泣,所以不經(jīng)常使用。

document.write()如果文檔輸出寫在當(dāng)前頁面加載完畢之后完残,那么當(dāng)前頁面會被關(guān)閉伏钠,會新開一個頁面輸出信息。

4.js變量的命名規(guī)范

什么是變量谨设?什么是常量(直接量)贝润?

程序運行期間可以發(fā)生改變的量就是變量。

自始至終在程序的運行過程中不能改變的量就是常量铝宵。常量放在常量區(qū)打掘,常量區(qū)的值有且只有一份,所以不能改變鹏秋。

變量的命名規(guī)范:

①以數(shù)字尊蚁、字母、下劃線侣夷、$符組成横朋,并且數(shù)字不能開頭。

②不能以關(guān)鍵字或者保留字命名百拓。

③見名知義琴锭,駝峰命名法。

④區(qū)分大小寫衙传。

⑤區(qū)別于c語言决帖,變量名可以重復(fù)命名,但是后面的會覆蓋前面的蓖捶。

聲明一個變量為空地回,有空間沒有值 ? ?var ?num=null;

聲明一個未定義的變量,沒有值沒有空間 ? ?var num1;

5.js數(shù)據(jù)類型

number ? string ? object ?undefined ?boolean

類型轉(zhuǎn)換有兩種:顯式類型轉(zhuǎn)換(強類型轉(zhuǎn)換) ? ? ? ?隱式類型轉(zhuǎn)換(弱類型轉(zhuǎn)換)

顯式類型轉(zhuǎn)換(強類型轉(zhuǎn)換)的例子:

String()可以將一個數(shù)值轉(zhuǎn)換為字符串

var ? a=123;

console.log(String(a),typeof ?String(a));//123,string

Number()可以將字符串轉(zhuǎn)換為數(shù)值類型刻像,要么字符串全是數(shù)字畅买,要么字符串?dāng)?shù)字加一個小數(shù)點,小數(shù)點只能有一個细睡,如果有多個谷羞,轉(zhuǎn)換后的結(jié)果是NaN,但是還是number類型溜徙。如果字符串里面包含了字母湃缎,并不是全數(shù)字,那么轉(zhuǎn)換后的就不是數(shù)字萌京,而是NaN雁歌,但是還是number類型。

var ? str="123";

console.log(Number(str),typeofNumber(str));//123,number

var ?str1="123abc";//有字母轉(zhuǎn)換不了

console.log(Number(str1),typeofNumber(str1));//NaN,number

parseInt將字符串轉(zhuǎn)換成整型數(shù)字知残。必須滿足第一個字符為數(shù)字靠瞎,將從第一個字符取到第一個不是數(shù)字的字符為止。

var ?str3="12.3abc";

console.log(parseInt(str3));

與parseInt對應(yīng)的是parseFloat取得浮點型

隱式類型轉(zhuǎn)換(弱類型轉(zhuǎn)換)的例子:

運算符重載:+號會根據(jù)式子兩邊式子的類型采取行為求妹,如果兩邊是數(shù)值乏盐,相加,如果兩邊是字符串制恍,拼接父能,如果一邊是數(shù)值一邊是字符串也是拼接。

取正操作:將數(shù)字字符串净神,轉(zhuǎn)換成數(shù)值何吝,必須保證全部為數(shù)字字符,否則將不起作用

var ?num2="12";

console.log(typeof ?+num2);

純數(shù)字的字符串減0鹃唯,也可以得到數(shù)字

var ? a="12";

console.log(typeof ?a-0);

隱式類型轉(zhuǎn)換爱榕,先轉(zhuǎn)換再運算:

var ? a="12";

var ? b="10";

alert(a-b); ?//7

var ? a=5,b="5";

alert(a==b);//true

alert(a===b);//false ? ? ? === 就是不轉(zhuǎn)換類型,直接比較

6.js運算符

js是弱類型語言坡慌,只有數(shù)值類型黔酥,沒有分浮點型和整型之分。

算術(shù)運算符 +洪橘,—跪者,*,/,%,++,--

復(fù)合運算符 +=熄求,-=渣玲,/=,*=,%=

關(guān)系運算符 ?> ? ?< ? ?<= ? ? >= ? ? === ? ?== ? ?!= ? ? ?!== ? ? ? ? ?!=和==對立,!==和===對立

邏輯運算符? ? 邏輯與&&? ? ? 邏輯或 || ? ? ? ? ? 邏輯非 !取反

三目運算符抡四,也叫條件運算符:var a=表達式1柜蜈?表達式2:表達式3仗谆;

如果表達式1結(jié)果為真指巡,a結(jié)果為表達式2的值淑履,如果表達式1結(jié)果為假,a結(jié)果為表達式3的值藻雪。相當(dāng)于if else語句

邏輯與 && 鏈接的表達式秘噪。如果前面的表達式為真,整體的值勉耀,與最后一個表達式有密切的關(guān)系指煎。如果最后一個表達式有算術(shù)表達式鏈接,就是一個具體的數(shù)值便斥。如果最后一個表達式由關(guān)系運算符鏈接至壤,就是true或者false。如果最后一個表達式是0枢纠,就是0像街。一假則假,前面為假,后面就不走了晋渺。

邏輯或 ? ? ? ? 同假為假 ? ? ? ? ?一真即真

只要是用關(guān)系運算符鏈接的表達式镰绎,返回的值類型都是boolean值

==只需要滿足值相等就為真,不判斷類型木西,還有一種理解就是畴栖,== 先轉(zhuǎn)換類型,然后比較

var ? ? ? ?istrue=(3=="3");//true

var ? ? ? ? ?istrue=(3!="3");//false?

===數(shù)值和類型都相等才為真八千,不僅數(shù)值要相等吗讶,類型也要相同,=== 不轉(zhuǎn)換類型恋捆,直接比較

var ? ? ? ? istrue=(3==="3");//false

var ? ? ? ? istrue=(3!=="3");//true

num++, ?num+=1, ? num=num+1

++在前先++再賦值照皆,++在后先賦值再++

先賦值再運算(i++就是i=i+1)

var ? ?b1=11;

b2=b1++;//先把b1的值賦給b2,b1在加1

console.log("b2的值是"+b2,"b1的值是"+b1)//11 ? ?12

var ? c1=11;

c2=++c1;//c1先加1鸠信,再賦值給c2+

console.log("c2的值是"+c2,"c1的值是"+c1)//12 ? 12

賦值運算符“=”,將等號右邊的值 賦值 給左邊

多個打印內(nèi)容區(qū)分時纵寝,以逗號隔開

可以單獨打印變量或者常量的值,逗號隔開

可以打印格式化字符串星立,中間使用占位符%d %f %s ,帶占位符的打印爽茴,帶占位符的要放在第一個

7.js元素獲取

1.通過ID名稱獲取,因為ID名不能重復(fù)绰垂,所以獲取的元素唯一

var ? ?div=document.getElementById("myDiv");

2.通過標(biāo)簽名稱獲取元素室奏,得到的是一個數(shù)組(就算只有一個值,也是一個數(shù)組)劲装。如果想要將數(shù)組中的其中某一個取出來胧沫,必須需要用到數(shù)組下標(biāo)昌简。數(shù)組下標(biāo)從0 開始,最大是數(shù)組長度減一绒怨。

var ? ?first=document.getElementsByTagName("div")[0];

3.通過行間屬性name獲取元素纯赎,得到的也是一個數(shù)組

var ? ?secondbtn=document.getElementsByName("btn")[1];

4.通過標(biāo)簽的類名獲取元素。獲取到得也是一個數(shù)組

var ? ?p=document.getElementsByClassName("text")[1];

5.通過元素的css選擇器獲取元素南蹂,選擇器的名稱一定要寫全犬金,并且css選擇器名稱都可以寫在里面,如果獲取到多個元素六剥,只會選取第一個晚顷。

var ? ?myDiv=document.querySelector("#myDiv");

6.通過元素的css選擇器名稱獲取元素,但是獲取的是一個數(shù)組,使用的時候需要加下標(biāo)

var ? ?myDiv3=document.querySelectorAll(".test")[0];

8.通過js給元素加類名

給元素加類名后疗疟,類名相當(dāng)于重新賦值该默,所以會覆蓋原來的類名,要想原來的類名也起作用策彤,就要把原來的類名也寫上栓袖。多個類名中間用空格隔開

myDiv.className="test text";

使用animate.css,就是采用添加類名的方法

在head里面引入文件

<link ? rel="stylesheet" ? ?type="text/css" ? ? ?href="css/animate.css"/>

在script里面加類名

var ? div=document.getElementsByTagName("div")[0];

div.onmouseover=function(){

this.className="animated shake"

//this.style.animation="shake 2s";

}

div.onmouseout=function(){

//this.style.animation="bounce 2s";

this.className="animated bounce";

}

9.事件綁定

1.點擊事件

div.onclick=function(){

alert("hahaha!");

}

2.鼠標(biāo)移入事件

div.onmouseover=function(){

//this永遠指向所在函數(shù)的所有者锅锨,如果沒有所有者時指向window

this.style.width="800px";

}

3.鼠標(biāo)移除事件

div.onmouseout=function(){

this.style.height="400px";

}

4.window.onload事件叽赊,load事件: 當(dāng)頁面完全加載后再window上面觸發(fā).一般用于head中的script代碼段.保證在執(zhí)行js代碼之前, 頁面已經(jīng)完全加載完畢.如果沒有在頁面加載完畢,將獲取不到元素必搞。

UI事件指的是那些不一定與用戶操作有關(guān)的事件.


二必指、js分支結(jié)構(gòu)

1.布爾類型

布爾類型,代表非真即假的一種數(shù)據(jù)類型恕洲。它的值只有兩個塔橡,true真或false假。非0即為真霜第。0是假的葛家,字符串“0”是真的∶诶啵空為假癞谒,null是假

布爾類型的命名規(guī)則:
習(xí)慣以is,has刃榨,can開頭? 例如:isTrue isBoy isHight isLoading hasMoney hasBoyFriend canFly ? ?canEat

2.js分支語句

分支語句其實有兩種弹砚,if語句,switch語句

if語句有三種形式:

第一種:if(條件表達式){語句}枢希,當(dāng)條件表達式為真時執(zhí)行語句桌吃,否則什么都不執(zhí)行

第二種:if(條件表達式){語句一}else{語句二},當(dāng)條件表達式為真時執(zhí)行語句一苞轿,否則為假執(zhí)行語句二

第三種:if語句集聯(lián)式茅诱,if(條件表達式1){語句一}else if(條件表達式2){語句二}else{語句三}逗物。當(dāng)條件表達式1為真執(zhí)行語句一,當(dāng)條件表達式1為假瑟俭,并且條件表達式2為真翎卓,執(zhí)行語句二,否則執(zhí)行語句三

如果是比較字符串之間的大小尔当,就先從第一位開始比較莲祸,第一位最大的就是最大的

所以如果獲取的值是字符串蹂安,要轉(zhuǎn)換成數(shù)字

使用switch通常用來解決多分支椭迎,并且多分支的情況是值是確定的。case 里面的值是具體的田盈。

var ? ? ?num=10;

switch(num){

case ? ?10:

alert(num);

//break;

case ? ?0://如果第一個滿足條件畜号,沒有break,就會接著執(zhí)行第二個允瞧,

//并且不需要進行判斷简软,只到找到break再終止

alert("哈哈哈");

break;

default:

alert("呵呵呵");

break;

}

var ? n=8;

switch(n){

case8:

case9:

case10:

case11:

alert(num);

break;

default:

alert("呵呵呵");

break;

}


三、js循環(huán)結(jié)構(gòu)

什么是循環(huán)述暂?當(dāng)滿足特定時痹升,反復(fù)執(zhí)行同一段代碼就是循環(huán)。

for循環(huán) ? while循環(huán) ? ?do..while循環(huán)

循環(huán)必不可少的四部分:
1.循環(huán)變量初始化畦韭;2.循環(huán)條件疼蛾;3.循環(huán)增量;4.循環(huán)執(zhí)行的語句

1.while循環(huán)

while(條件表達式){循環(huán)語句}? ? 當(dāng)條件滿足表達式的時候艺配,反復(fù)執(zhí)行語句察郁,直到條件表達式為假跳出循環(huán)

var ?a=1;

while(a<101){

if((7!=a%10)&&(0!=a%7)&&(7!=parseInt(a/10))) {

console.log(a);

}

a++;

}

2.do..while..循環(huán)

do{循環(huán)語句}while(條件表達式)

先執(zhí)行語句,再判斷是否滿足循環(huán)條件转唉,如果滿足繼續(xù)循環(huán)皮钠,否則跳出循環(huán)

var ?num=1;

do{

if(num%7==0) {

console.log(num);

}

num++;

}while(num<101);

while循環(huán)與do..while..循環(huán)的區(qū)別在于,while循環(huán)先判斷再執(zhí)行赠法,可能出現(xiàn)一次都不執(zhí)行的情況麦轰,do..while..循環(huán)先執(zhí)行再判斷,至少會執(zhí)行一次

3.for循環(huán)

for (循環(huán)變量初始化砖织;循環(huán)條件款侵;循環(huán)增量) {循環(huán)語句}

通過判斷循環(huán)條件是否成立,決定是否執(zhí)行循環(huán)語句镶苞。

for循環(huán)的執(zhí)行次數(shù)為:不滿足條件的第一個值減去滿足條件的第一個值除以循環(huán)增量

for(var ? i=1;i<101;i++) {

if(i%7==0) {

console.log(i);

}

}

for循環(huán)與數(shù)組的聯(lián)合使用非常方便喳坠。

數(shù)組有容量,數(shù)組還有下標(biāo)茂蚓,這兩個一個作為循環(huán)條件壕鹉,一個作為循環(huán)變量

for循環(huán)用于知道循環(huán)次數(shù)的情況

while循環(huán)用于只知道循環(huán)條件的情況剃幌,未知循環(huán)次數(shù)的情況

do...while循環(huán)不常用

4.js循環(huán)控制

continue跳出本次循環(huán),循環(huán)繼續(xù)

break結(jié)束本層循環(huán)晾浴,循環(huán)終止

var ? sum=0;

for(var ? i=1; i<101; i++) {

if(i%2==0) {

continue;

}

sum+=i;

}

console.log(sum);

for(var ? ?i=1; i<101; i++) {

console.log(i);

if(i%13==0) {

break;

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末负乡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子脊凰,更是在濱河造成了極大的恐慌抖棘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狸涌,死亡現(xiàn)場離奇詭異切省,居然都是意外死亡,警方通過查閱死者的電腦和手機帕胆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門朝捆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人懒豹,你說我怎么就攤上這事芙盘。” “怎么了脸秽?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵儒老,是天一觀的道長。 經(jīng)常有香客問我记餐,道長驮樊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任剥扣,我火速辦了婚禮巩剖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钠怯。我一直安慰自己佳魔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布晦炊。 她就那樣靜靜地躺著鞠鲜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪断国。 梳的紋絲不亂的頭發(fā)上贤姆,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音稳衬,去河邊找鬼霞捡。 笑死,一個胖子當(dāng)著我的面吹牛薄疚,可吹牛的內(nèi)容都是我干的碧信。 我是一名探鬼主播赊琳,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼砰碴!你這毒婦竟也來了躏筏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤呈枉,失蹤者是張志新(化名)和其女友劉穎趁尼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猖辫,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡酥泞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了住册。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婶博。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖荧飞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情名党,我是刑警寧澤叹阔,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站传睹,受9級特大地震影響耳幢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欧啤,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一睛藻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邢隧,春花似錦店印、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至纫谅,卻和暖如春炫贤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背付秕。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工兰珍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人询吴。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓掠河,卻偏偏與公主長得像励幼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子口柳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容