一、函數的返回值
可以使用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();