一、變量的介紹
1、啥是變量?
??變量的本質是一塊有名字的內存空間。變量由變量名和變量值構成。變量名指的是內存空間的別名,一般位于賦值運算符的左邊;而變量值指的是內存空間中的數據,一般位于賦值運算符的右邊。例如:var balance =250;
其中balance為變量名,是內存空間的別名;250為變量值,為數據。
2、如何聲明變量?
?暫且可將聲明理解為創造,當聲明變量時,使用關鍵字 var。
?第一種:單獨聲明
<script>var a = 32; //聲明一個變量,變量名為a,變量值為32;var b = 45; //聲明一個變量,變量名為b,變量值為45;</script>
復制代碼
?第二種:一個var多個聲明變量
<script>var a = 32,b = 45,c = 57; //利用一個var來聲明多個變量用逗號隔開var x = 123,y = 245,z = 100; //此寫法與上面意思一樣寫法不同而已
</script>
復制代碼
?第三種:重復聲明
<script>var a = 120; var a = 356; //這些指令表明使用同一變量名聲明兩次,造成重復
</script>
復制代碼
?第四種:遺漏聲明
<script>var m = 12;var n = 32;alert(m) //可彈出m的值,卻遺漏了下面n的值
</script>
復制代碼
?注意細節:
??1.在JS中重復聲明雖然是允許的,但在開發中,不要這樣用;
??2.在JS中遺漏聲明也是允許,但在實際開發時, 也是要盡量避免的;
??3.在JS中,可以通過alert(),來彈出一個變量的值。
3、聲明變量的特征有?
特征1:如果僅僅是聲明變量,那么變量是有默認值
<script>var a; // 如果你僅僅是聲明一個變量,并非賦值,那么它的默認值為undefinedconsole.log(a) // 打印出a的值
</script>
復制代碼
特征2:使用var 聲明的變量可以進行提升,提升就是把加var的變量提前最前面
解析:JS代碼在執行之前有一個預編譯,預編譯做了兩件事:
??(1)把加var的變量提升,提升的僅僅是聲明,而沒有賦值部分;
??(2)把函數提升到了代碼段(一個script標簽就是一個代碼段)的最前面。 當預解析完后,才會執行JS代碼;
??(3)當函數與變量套用著,加var的變量雖然那個要提升,但由于此時的變量為局部變量,只會提升到函數體的最前面。
例1.1:<script> var a; //此時只有聲明提升到前面而變量值沒有console.log(a) // 打印出的a的值為undefinedvar a = 120; //這一步相當于沒操作 </script>
復制代碼
例1.2:<script> var a; //此時只有聲明提升到前面而變量值沒有console.log(a) // 打印出的a的值為undefinedvar a = 120; //這一步相當于沒操作 console.log(a) //打印出的a的值為120</script>
復制代碼
例2:<script> g() //調用函數function g(){console.log("g....") //此時也可以打印出來g...,因為函數整個提升到了前面} //聲明定義變量</script>
復制代碼
例3:<script>console.log("--------------------") //打印出----------var a; //這是將局部變量提升到函數體最前面function f(){console.log(a) //要打印時會去尋找變量,即為undefineda = 2;}f();</script>
復制代碼
4、變量分為哪幾類?
1.局部變量
??局部變量指在函數內聲明的變量。它只能在函數內部訪問,在函數外面是不能被訪問;就好像是各個地方的方言一樣。
例子:<script>function f(){var name = "wangcai"; //局部變量,因為這個變量放在函數里面console.log(name)}console.log("----"+name) //這里因為name是局部變量,所以只會顯示----// 函數聲明完后,你要使用這個函數,那么你一定要調用這個函數f()</script>
復制代碼
2.全局變量
??全局指變量指在函數外聲明的變量。它在函數內部和外部都可以訪問;就如同標準普通話在任何地區都可以用。
例子:<script>var age = 100; //全局變量聲明定義了agefunction f(){console.log("在函數里面訪問的全局變量"+age) //這里為局部變量只有調用函數后才會打印出來}console.log(age) //此為全局變量,在函數外聲明的f() // 函數調用,這里會將函數的第二行代碼執行出來</script>
復制代碼
二、函數的認識
1、啥是函數?
??函數可以說成是個功能塊,當你給它一個輸入值時,在這個功能塊中通過某種關系或者說映射,就能得到一個輸出值。就像豆漿機,將準備的大豆放到機器中,通過榨汁得到一杯豆漿。
2、如何定義函數?
方式一:函數聲明
??用關鍵字function來聲明函數,其中基本格式如下:function ?f(){ };其中有f為函數名;()是函數的特殊標志;{}叫函數體或者具體的功能
function f(){console.log("函數聲明")
}
復制代碼
方式二:函數表達式
??函數表達式本質上是一個變量;它指的是將以function聲明的函數作為表達式放在賦值的右邊,重新定義一個變量。
var g = function f(){console.log("函數表達式")
}
f();
復制代碼
區別:聲明函數與函數表達式兩者在提升階段不一樣;函數聲明可以將函數調用寫到函數聲明之前,而函數表達式則將函數調用提前會出錯。
函數聲明:
<script>f();function f(){console.log("函數聲明提升") //此時是可以打印出"函數聲明提升"}
</script>
函數表達式:
<script>f();var g = function f(){console.log("函數表達式提升") //會報錯,f沒有定義}
</script>
復制代碼
3、函數返回值
1.函數在沒有寫return或者只寫了return時,默認返回undefined。
(1) function f(){//這是相當于默認的return undefined;}
(2)function f(){return; //同上,默認的return undefined;
}
復制代碼
2.在一個函數中,執行過return語句后,下面的語句將不再執行。
function f(){console.log("caomeitai")return thanks; //當執行過該語句,下面不再執行console.log("xiaoyuzhou") //并未執行
}
復制代碼
4、函數的參數
??在函數定義與函數調用時,有兩個參數:形參與實參。形參即形式參數,代表著在定義函數時,小括號中的參數;實參即實際參數則代表在調用函數時,小括號中的參數。
function add(x,y){ //這里小括號中的x,y為形參return x+y;
}
console.log(add(2,3)); //在調用了add函數時的2,3為實參
復制代碼