JavaScript------函數的返回值,函數的作用域及聲明提前

一、函數的返回值

可以使用return 來設置函數的返回值
返回值可以是任意的數據類型,也可以是一個對象,也可以是一個函數

函數返回值語法:

return 值;

注意:

return後的值將會作爲函數的執行結果返回
* 可以定義一個變量,來接收該結果
*
* 在函數中return後的語句都不會執行
*
* 如果return語句後不跟任何值就相當於返回一個undefined
* 如果函數中不寫return,則也會返回undefined
*
* return後可以跟任意類型的值

舉例:創建一個函數,用來計算三個數的和

function sum(a,b,c){
				var d = a + b + c;
				return d;
			}
var result = sum(1,2,3);
			console.log("result ="+result);

調用函數
變量result的值就是函數的執行結果
函數返回什麼result的值就是什麼

break 、continue 、return 之間的區別

			
			 break;
			 使用break可以退出當前循環
			 
			 continue;
			 使用continue用於跳過當次循環
			 
			 return;
			 使用return可以結束整個函數
			 

二、函數的作用域

函數作用域的定義:

作用域(scope)指一個變量的作用的範圍
js中一共有兩種作用域:一種是全局作用域,另一種是函數作用(局部作用域)

全局作用域

直接編寫在script標籤中的js代碼,都在全局作用域
全局作用域在頁面打開時創建,在頁面關閉時銷燬
在全局作用域中有一個全局對象window,它代表的是一個瀏覽器窗口,它由瀏覽器創建,我們可以直接使用
在全局作用域中:創建的變量都會作爲window對象的屬性保存 ;創建的函數都會作爲window對象的方法保存
全局作用域中的變量都是全局變量,在頁面的任意的部分都可以訪問的到

函數作用域

調用函數時創建函數作用域,函數執行完畢以後,函數作用域銷燬
每調用一次函數就會創建一個新的函數作用域,他們之間是互相獨立的
在我函數作用域中可以訪問到全局作用域的變量
在全局作用域中無法訪問到函數作用域的變量
當在函數作用域中操作一個變量時,它會先在自身作用域中尋找,如果有就直接使用;如果沒有則向上一級作用域中尋找,直到找到全局作用域;如果全局作用域中依然沒有找到,則會報錯ReferenceError
在函數中要訪問全局作用域變量可以使用window對象(window.×)
在函數中,不使用var聲明的變量都會成爲全局變量
定義形參就相當於在函數作用域中聲明瞭變量

			var a = 10;
			function fun(){
				
				//var a = "我是函數中的變量a";
				var b = 20;
				
				console.log(a);
			}
			fun();
			//console.log(b);

注意: 在函數作用域中也有聲明提前的特性 ;使用var關鍵字聲明的變量,會在函數中所有代碼執行之前被聲明;函數聲明也會在函數中所有代碼執行之前執行

三、聲明提前

聲明提前包括兩種,一種是變量的聲明提前,另一種是函數的聲明提前

變量的聲明提前

使用var 關鍵字聲明的變量,會在所有的代碼執行之前被聲明(但是不會賦值),但是如果聲明變量時不使用var關鍵字,則變量不會被聲明提前

函數的聲明提前

使用函數聲明形式創建的函數 function 函數名(){} ;它會在所有的代碼執行之前就被創建,所以我們可以在函數聲明前來調用函數; 使用函數表達式創建的函數,不會被聲明提前,所以不能在聲明前調用

			console.log("a="+a);
			var a=10;
			//函數聲明,會被提前創建
			f();
			function f(){
				console.log(111);
			}
			//函數表達式,不會被提前調用
			var fun = function(){
				console.log(222);
			}
			fun();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章