JS基礎(chǔ)知識(shí)點(diǎn)js基礎(chǔ):變量,數(shù)據(jù)類型(基本和引用),數(shù)據(jù)類型轉(zhuǎn)換選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)

? ? ? ? ? JS基礎(chǔ)知識(shí)點(diǎn)js基礎(chǔ):變量,數(shù)據(jù)類型(基本和引用),數(shù)據(jù)類型轉(zhuǎn)換選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)? ? ? ??


基本數(shù)據(jù)類型(按值訪問):Undefined 、 Null 、 Boolean 、 Number 和 String

引用數(shù)據(jù)類型(按引用訪問):object、Array、function

typeof(檢測基本數(shù)據(jù)類型時(shí) typeof 是非常得力的助手)可以返回以下6種類型:undefined? 、 boolean 、 number 、string、object(對(duì)象和null都是object類型)、function

instanceof(用于檢測引用類型):所有引用類型的值都是 Object 的實(shí)例,person(引用類型值) instanceof Object永遠(yuǎn)都是true。

要知道是什么類型的對(duì)象,使用instanceof 操作符接上想要判斷的類型,例如colors instanceof Array。

基本數(shù)據(jù)類型復(fù)制:復(fù)制的是該變量的副本,這兩個(gè)變量可以參與任何操作而不會(huì)相互影響

引用數(shù)據(jù)類型復(fù)制:復(fù)制的是該變量的指針,該指針指向存儲(chǔ)在堆中的一個(gè)對(duì)象。復(fù)制操作結(jié)束后,兩個(gè)變量實(shí)際上將引用同一個(gè)對(duì)象。因此,改變其中一個(gè)變量,就會(huì)影響另一?個(gè)變量

傳參:基本類型和引用類型全部是按值傳遞,相當(dāng)于把參數(shù)復(fù)制一份給到function的局部變量

為了便于操作基本類型值,ECMAScript 還提供了 3 個(gè)特殊的引用類型: Boolean 、 Number 和

String 。

Number 類型重寫了 valueOf() 、 toLocaleString() 和 toString()方法。除了繼承的方法之外, Number 類型還提供了一些用于將數(shù)值格式化為字符串的方法。?toFixed() 方法會(huì)按照指定的小數(shù)位返回?cái)?shù)值的字符串表示。

String 對(duì)象的方法也可以在所有基本的字符串值中訪問到。其中,繼承的 valueOf() 、 toLocale-String() 和 toString() 方法,都返回對(duì)象所表示的基本字符串值。String 類型的每個(gè)實(shí)例都有一個(gè) length 屬性。

字符方法:兩個(gè)用于訪問字符串中特定字符的方法是: charAt() 和 charCodeAt() 。

var stringValue = "hello world";

alert(stringValue.charAt(1)); //"e"

alert(stringValue.charCodeAt(1)); // 輸出"101",小寫字母 "e" 的字符編碼

字符串操作方法

1、concat:拼接字符串,可接收任意多字符串,不改變原字符串值,雖然 concat() 是專門用來拼接字符串的方法,但實(shí)踐中使用更多的還是加號(hào)操作符(+)。

var stringValue = "hello ";

var result = stringValue.concat("world", "!");

alert(result); //"hello world!"

alert(stringValue); //"hello"

2、三個(gè)基于子字符串創(chuàng)建新字符串的方法: slice() 、 substr() 和 substring() 。都接收1或2個(gè)參數(shù)。

slice() 、substring()在接收正數(shù)參數(shù)時(shí),第一個(gè)參數(shù)是字符串截取的起始位置,第二個(gè)是字符串結(jié)束位置。

substr()在接收正數(shù)參數(shù)時(shí),第一個(gè)參數(shù)同上,第二個(gè)參數(shù)是截取長度。

當(dāng)?shù)谝粋€(gè)參數(shù)為負(fù)數(shù)的時(shí)候,slice()和substr()按照參數(shù)+字符串長度結(jié)果來截?。籹ubstring()將負(fù)參數(shù)轉(zhuǎn)換為0;

當(dāng)?shù)诙€(gè)參數(shù)為負(fù)數(shù)的時(shí)候,slice()按照參數(shù)+字符串長度結(jié)果來截??;substr()和substring()將負(fù)參數(shù)轉(zhuǎn)換為0;

3、字符串位置方法:有兩個(gè)可以從字符串中查找子字符串的方法: indexOf() 和 lastIndexOf()

4、trim():刪除字符串前后空格,不改變原字符串值

5、字符串大小寫轉(zhuǎn)換方法

字符串大小寫轉(zhuǎn)換的方法有 4 個(gè): toLowerCase() 、 toLocaleLowerCase() 、 toUpperCase() 和toLocaleUpperCase() 。

6、字符串的模式匹配方法

match() 方法只接受一個(gè)參數(shù),要么是一個(gè)正則表達(dá)式,要么是一個(gè) RegExp 對(duì)象。返回?cái)?shù)組。

search()參數(shù)同上。返回要查找的在字符串中第一次出現(xiàn)的位置。

字符串替換:var result = text.replace("at", "ond");

7、localeCompare() 方法

var stringValue = "yellow";

alert(stringValue.localeCompare("brick")); //1

在前面返回1,同樣位置返回0,在后面返回-1





變量的聲明和變量的初始化

1. 變量的聲明:var 變量名;

變量的賦值:變量名=值;

2. 變量的初始化:var 變量名=值;

數(shù)據(jù)類型

1.簡單類型和復(fù)雜類型:

簡單類型: Number,String,Boolean,Undefined,Null

復(fù)雜類型:Object

2.數(shù)字類型:Number

字符串類型:String,在js中存儲(chǔ)字符串的數(shù)據(jù)的值,可以使用單引號(hào),也可以使用雙引號(hào),目前推薦大家用雙引號(hào)(代碼中的括號(hào)小括號(hào),大括號(hào),中括號(hào),逗號(hào),分號(hào)都是英文的)

布爾類型:Boolean,其他的語言中bool,布爾類型中的數(shù)據(jù)只有true(1)或者是false(0)

未定義:undefined--就是自己,當(dāng)一個(gè)變量聲明了沒有初始化(沒有賦值),就是undefined

如果變量的值是Undefined和數(shù)字計(jì)算,結(jié)果是NaN---不是一個(gè)數(shù)字

:null,當(dāng)一個(gè)變量使用后,不想再使用了,可以賦值為null---->釋放內(nèi)存內(nèi)存空間

Object:對(duì)象

typeof關(guān)鍵字--->識(shí)別該變量的類型

1.typeof 變量名

2.typeof(變量名)

數(shù)字類型的范圍

1.//獲取數(shù)字類型的最大值

console.log(Number.MAX_VALUE);

2.//獲取數(shù)字類型的最小值

console.log(Number.MIN_VALUE);

3.//isNaN--->不是一個(gè)數(shù)字,結(jié)果才是true,否則就是false

var num="我好開森哦";

console.log(isNaN(num));

字符串的長度和拼接

1.獲取字符串的長度:變量名.length---->該字符串的長度

console.log(name.length);

2.字符串的拼接:使用+來進(jìn)行拼接

console.log(name1+name2+name3);

數(shù)字類型轉(zhuǎn)換

1.其他類型轉(zhuǎn)數(shù)字類型---字符串轉(zhuǎn)數(shù)字, 布爾轉(zhuǎn)數(shù)字

1.parseInt(變量);---轉(zhuǎn)成整數(shù)的方式

2.parseFloat(變量)----轉(zhuǎn)小數(shù)的方式

3.Number(變量)---數(shù)字類型----如果轉(zhuǎn)換失敗了,則顯示的是NaN

4.isNaN(值)--->如果不是一個(gè)數(shù)字則返回true,如果是一個(gè)數(shù)字則返回false

2.其他類型轉(zhuǎn)字符串類型

1.變量.toString()---轉(zhuǎn)字符串了

2.String(變量)----轉(zhuǎn)字符串了

3.其他類型轉(zhuǎn)布爾類型

Boolean(變量)---轉(zhuǎn)布爾類型

操作符

算數(shù)運(yùn)算符:+ - * / %(取余)---->一個(gè)數(shù)字和另一個(gè)數(shù)字相除之后的余數(shù)

算數(shù)運(yùn)算表達(dá)式:是一個(gè)表達(dá)式,由算數(shù)運(yùn)算符連接起來的表達(dá)式

關(guān)系運(yùn)算符:> <>= <=>

邏輯運(yùn)算符: &&--->邏輯與 || --->邏輯或 ! --->邏輯非

賦值運(yùn)算符:=

賦值運(yùn)算符中還有復(fù)合賦值運(yùn)算符: += -= *= /= %=

一元運(yùn)算符:(++變量 變量++)

如果++是在后面,參與運(yùn)算的時(shí)候,先參與運(yùn)算,然后運(yùn)算完畢后再自身加1

如果++是在前面,先自身加1,參與運(yùn)算

流程控制

1.順序結(jié)構(gòu)

2. 分支語句(5個(gè)):if , if-else , if-else if-else if -else if...else , swtich-case , 三元表達(dá)式

3.循環(huán)語句(5):while , do-while , for , break , continue

break關(guān)鍵字,continue關(guān)鍵字

1.break關(guān)鍵字---->關(guān)于循環(huán)的

在循環(huán)中如果遇到了break關(guān)鍵字,則立刻跳出當(dāng)前所在的循環(huán)

2.continue關(guān)鍵字---->在循環(huán)中使用

在循環(huán)中遇到了continue--->立刻回到循環(huán)的條件的位置,繼續(xù)下一次循環(huán)

數(shù)組

1.數(shù)組的作用:一次性可以存儲(chǔ)多個(gè)數(shù)據(jù),數(shù)組中存儲(chǔ)的數(shù)據(jù)類型可以不一樣

2.數(shù)組的遍歷:就是一個(gè)一個(gè)的獲取數(shù)組中的數(shù)據(jù)

3.數(shù)組的定義:

1.通過構(gòu)造函數(shù)的方式創(chuàng)建數(shù)組

var 數(shù)組名=new Array();

2.通過構(gòu)造函數(shù)的方式創(chuàng)建數(shù)組

var 數(shù)組名=new Array(長度);

3.字面量的方式定義數(shù)組

var 數(shù)組名=[];

函數(shù)

1.函數(shù):把一些重復(fù)的代碼封裝起來,在需要的時(shí)候直接調(diào)用

2.函數(shù)的作用:代碼的重用(代碼的重復(fù)使用)

3.函數(shù)的定義:

函數(shù)定義的語法:

function 函數(shù)名(){

函數(shù)體

}

函數(shù)的調(diào)用:

函數(shù)名();

4. 函數(shù)名字符合駝峰命名法

5.函數(shù)的參數(shù)

函數(shù)的參數(shù):函數(shù)在定義的時(shí)候,函數(shù)名后面的小括號(hào)中的變量,就叫參數(shù)

函數(shù)在調(diào)用的時(shí)候傳入的變量或者是值,也叫參數(shù);

函數(shù)定義的時(shí)候函數(shù)名后面的小括號(hào)里面的變量叫形參

函數(shù)調(diào)用的時(shí)候函數(shù)名后面的小括號(hào)里面的變量或者是值叫實(shí)參

6.函數(shù)的返回值

如果一個(gè)函數(shù)沒有返回值(函數(shù)中沒有return),也沒有參數(shù),這個(gè)函數(shù)可以叫:無參數(shù)無返回值的函數(shù);

返回值的細(xì)節(jié)問題:

當(dāng)需要返回多個(gè)數(shù)據(jù)的時(shí)候,可以先將這些數(shù)據(jù)都傳入到數(shù)組中,最后返回一個(gè)數(shù)組即可。

在函數(shù)中,return下面的代碼,不執(zhí)行;

函數(shù)沒有返回值,接收了返回來的結(jié)果,結(jié)果是undefined;

當(dāng)一個(gè)變量聲明了,沒有賦值,結(jié)果是undefined;

當(dāng)一個(gè)函數(shù)內(nèi)部,有return,但是后面什么也沒有,那么此時(shí),這個(gè)函數(shù)也是沒有返回值的,該函數(shù)沒有明確的返回值;

當(dāng)一個(gè)函數(shù)沒有明確的返回值的時(shí)候,如果接收,結(jié)果就是undefined;

arguments偽數(shù)組

arguments是可以在函數(shù)內(nèi)獲取用戶在調(diào)用函數(shù)的時(shí)候傳入了幾個(gè)參數(shù),同時(shí)還可以獲取每個(gè)傳入?yún)?shù)的值

作用域

作用域:變量的使用范圍

局部變量:在函數(shù)中定義的變量就是局部變量

全局變量:除了函數(shù)以外任意的地方定義的變量,都是全局變量

局部變量的使用范圍:只能在函數(shù)中使用

全局變量的使用范圍:在頁面的任何位置都可以

代碼塊:在一對(duì)大括號(hào)中寫的代碼,變量在代碼塊聲明,只能在代碼塊中使用,(暫且的) 在js中是沒有塊級(jí)作用域的

隱式的全局變量:聲明變量,沒有使用var

數(shù)據(jù)類型轉(zhuǎn)換選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)? ? ? ??

1、數(shù)據(jù)類型轉(zhuǎn)換

數(shù)據(jù)類型:number,string,boolean,null,undefined

var a = 123;

var b = "123";

var c = 1.23;

var result = b +56; 拼接

1.1、什么是數(shù)據(jù)類型轉(zhuǎn)換

允許數(shù)據(jù)在各個(gè)類型之間靈活的轉(zhuǎn)變

1.2、隱式轉(zhuǎn)換

不需要認(rèn)為參與,由程序自動(dòng)完成

+

var a = true;

var b = 56;

var result = a + b; //57

1.3通過 typeof(參數(shù)) 函數(shù)幫助查看指定數(shù)據(jù)的類型

NaN : Not a Number?

isNaN() : 是不是一個(gè)數(shù)字

isNaN("abc") : true

isNaN(123) : false

2、強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換

轉(zhuǎn)換函數(shù)

1、toString()?? 其它類型轉(zhuǎn)字符串? 但是遇到null? undefind類型???? 報(bào)錯(cuò) 無法轉(zhuǎn)換

String();??? 其它類型轉(zhuǎn)字符串? 都能轉(zhuǎn)

面試題??? String?? vs?? toString()

var a = 123;

a.toString();

var b = ""+a; //string

var c = a+""; //string

2、其他類型轉(zhuǎn)number

1、parseInt(參數(shù))?? 取整

碰到第一個(gè)非數(shù)字的字符,停止轉(zhuǎn)換

如果第一個(gè)字符就是非數(shù)字的,結(jié)果為NaN

parseInt("123"); --> 123

parseInt("123ABC"); --> 123

parseInt("123.456"); -->123

parseInt("ABC123"); --> NaN

2、parseFloat(參數(shù))? 取小數(shù)

將字符串轉(zhuǎn)換為小數(shù)"15.36854"--->15.36854

3、彈出一個(gè)輸入框

var num = prompt("請(qǐng)輸入xxxx",0);

var num = prompt("請(qǐng)輸入xxxx",0);

2、函數(shù)

函數(shù)(function),也叫方法(method),或過程(procedure)

2.1、什么是函數(shù)

是一段被【預(yù)定義】好,并且可以被反復(fù)使用的代碼塊。

代碼塊:允許包含多條語句。

是一個(gè)獨(dú)立的功能體。

console.log();

alert(); --> alert("彈出內(nèi)容");

document.write();

parseInt(xxx);

parseFloat()

prompt()

2.2、定義函數(shù)

定義函數(shù)的過程:封裝

1、語法

關(guān)鍵字:function

function 函數(shù)名(){

//多條語句

}

定義一個(gè)函數(shù),功能為, 在控制臺(tái)上打印輸出 Hello World

3、調(diào)用函數(shù)

直接使用 函數(shù)名() 進(jìn)行調(diào)用

1、任何一個(gè)位置處

2、通過HTML元素事件來調(diào)用

4、參數(shù)

語法:function 函數(shù)名(參數(shù)列表){

參數(shù)列表:用,隔開的多個(gè)變量名(參數(shù)名)

}

function zhaZhiJi(fruit){

console.log("傳遞過來的水果是:" + fruit);

}

1、分支結(jié)構(gòu)

1、運(yùn)算符 - 比較運(yùn)算符

> , < , >= , <= , == , !=

>= : 3 >= 5 False

5 >= 5 True

== : 判斷等于,判斷兩個(gè)操作數(shù),是否相等,相等則為true,不等則為false

3 == 5 : False

3 == 3 : True

!= : 3 != 5 : True

"a" != "a" :False

以上運(yùn)算符的返回值 全部為 boolean 類型

3、程序的流程控制

程序=數(shù)據(jù)結(jié)構(gòu) + 算法;

數(shù)據(jù)結(jié)構(gòu):程序運(yùn)行中所需要的數(shù)據(jù)元素

算法:將要做的事情通過一系列的邏輯串起來

任何程序或算法都有結(jié)構(gòu):

1、順序結(jié)構(gòu)

代碼從頭到尾除注釋以外,按照出現(xiàn)的順序去執(zhí)行

2、選擇(分支)結(jié)構(gòu)

根據(jù)條件判斷哪一塊的程序要被執(zhí)行,哪一塊的程序不被執(zhí)行

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

根據(jù)條件判斷,反復(fù)的執(zhí)行某一段程序

4、if語句

滿足某個(gè)條件時(shí),執(zhí)行某些操作,不滿足則不執(zhí)行

語法:

if(條件){

//某些操作

}

當(dāng)條件結(jié)果為 true 時(shí),則執(zhí)行if語句塊中的語句

當(dāng)條件結(jié)果為 false時(shí),則不執(zhí)行if語句塊中的語句

一個(gè)條件一件事

if(){}

1、由比較運(yùn)算符 組成的表達(dá)式 稱為:條件表達(dá)式、邏輯表達(dá)式

2、if 條件中,如果不是boolean類型表達(dá)式,那么進(jìn)行隱式轉(zhuǎn)換

以下值中,都會(huì)默認(rèn)轉(zhuǎn)換為 false?

if(0){}

if(0.0){}

if(null){}

if(undefined){}

if(NaN){}

if(""){}

var a = prompt("請(qǐng)輸入一段話:");?? 小括號(hào)里面都是false

if(a){

//語句塊;

}

3、if 語句塊 {} 的問題

當(dāng)if語句塊中【只有一條語句】時(shí),{}可以省略

if(a){

console.log("Success !");

}

等價(jià)于

if(a)

console.log("Success!");

5、if - else結(jié)構(gòu)

語法:

if(條件){

語句塊1

}else{

語句塊2

}

判斷條件

如果條件的值為 true ,則執(zhí)行語句塊1

如果條件的值為 false,則執(zhí)行語句塊2

1、多重if結(jié)構(gòu)

在一套完整結(jié)構(gòu)中,允許判斷多個(gè)條件,最終,最多只能選擇一個(gè)條件去運(yùn)行

語法:

if(條件1){

語句塊1;

}else if(條件2){

語句塊2;

}else if(條件3){

語句塊3;

}else{

//以上條件都不滿足的時(shí)候,最終執(zhí)行的語句塊(此塊可選);

}

循環(huán)結(jié)構(gòu)的執(zhí)行步驟】

1、聲明循環(huán)變量;

2、判斷循環(huán)條件

3、執(zhí)行循環(huán)體操作

4、更新循環(huán)變量

然后循環(huán)執(zhí)行2-4,直到條件不成立時(shí),跳出循環(huán)。

while循環(huán)()中的表達(dá)式,運(yùn)算結(jié)果可以是各種類型,但是最終都會(huì)轉(zhuǎn)為真假,轉(zhuǎn)換規(guī)則同if結(jié)構(gòu):

var num = 1 ; //1、聲明循環(huán)變量;

while (num){ //2、判斷循環(huán)條件

document.write(num+"<br />");//3、執(zhí)行循環(huán)體操作

num++;//4、更新循環(huán)變量

}

while循環(huán)特點(diǎn):先判斷在執(zhí)行;

do-while循環(huán)特點(diǎn):先執(zhí)行,在判斷;即使初始條件不成立;do-while循環(huán)也至少執(zhí)行一次



【for循環(huán)】 ?1、for循環(huán)有三個(gè)表達(dá)式:① 聲明循環(huán)變量 ②判斷循環(huán)條件 ③ 更新循環(huán)變量; ? ? ? ? 三個(gè)表達(dá)式 用;分隔。 ? ? ? ? for循環(huán)三個(gè)表達(dá)式都可以省略,但是兩個(gè)缺一不可 ?2、for循環(huán)的執(zhí)行特點(diǎn)、先判斷、再執(zhí)行,與while相同。 ?3、for循環(huán)三個(gè)表達(dá)式都可以有多部分組成,第二部分多個(gè)判斷條件&& ||鏈接,第一三部分用逗號(hào)分隔。


↓打印結(jié)果

【循環(huán)控制語句】

1、break:跳出本層循環(huán),繼續(xù)執(zhí)行循環(huán)后面的語句。

如果循環(huán)有多層嵌套,則break只能跳出一層;

2、continue:跳過本次循環(huán)剩余的代碼,繼續(xù)執(zhí)行下一次循環(huán),

① 對(duì)于for循環(huán),contiune之后執(zhí)行的語句,是循環(huán)變量更新語句i++;

② 對(duì)于while、do-while循環(huán),contiune之后執(zhí)行的語句,是循環(huán)條件判斷;

因?yàn)?,使用這兩個(gè)循環(huán)時(shí),必須將contiune必須放到i++之后使用,否則contiune將跳過i++

導(dǎo)致死循環(huán);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容