摘要:函數(shù)函數(shù)是什么函數(shù)是這樣的一段代碼它只定義一次但可能被執(zhí)行或調(diào)用多次簡單來說函數(shù)就是一組可重用的代碼可以在程序的任何地方調(diào)用定義函數(shù)函數(shù)聲明方式定義函數(shù)時函數(shù)體的內(nèi)容是不會被執(zhí)行的這是一個函數(shù)字面量直接量方式這是一個函數(shù)調(diào)用函數(shù)定義一個函數(shù)
函數(shù)
函數(shù)是什么
函數(shù)是這樣的一段JavaScript代碼 它只定義一次 但可能被執(zhí)行或調(diào)用多次
簡單來說 函數(shù)就是一組可重用的代碼 可以在程序的任何地方調(diào)用
函數(shù)聲明方式
定義函數(shù)時 函數(shù)體的內(nèi)容是不會被執(zhí)行的
function fun(){ console.log("這是一個函數(shù)"); }
字面量/直接量方式
var fun = function(){ console.log("這是一個函數(shù)"); }調(diào)用函數(shù)
定義一個函數(shù)并不會自動的執(zhí)行它 定義了函數(shù)僅僅是賦予函數(shù)以及名稱并明確函數(shù)被調(diào)用時該做些聲明 調(diào)用函數(shù)才會真正執(zhí)行這些動作
定義一個函數(shù)fun
function fun(){ console.log("這是一個函數(shù)"); }
調(diào)運函數(shù)
fun(); //輸出字符串:這是一個函數(shù)函數(shù)的參數(shù)
函數(shù)的參數(shù)就相當于在函數(shù)中使用的變量(雖然這個比方不是很準確) JavaScript中的函數(shù)定義并未制定函數(shù)參數(shù)的可續(xù) 函數(shù)調(diào)用時也為對傳入的參數(shù)做任何的類型檢查
函數(shù)的參數(shù)分為形參和實參
形參:出現(xiàn)在函數(shù)定義文法中的參數(shù)列表是函數(shù)的形式參數(shù) 簡稱形參 簡單的說 就是定義函數(shù)使用的參數(shù)就是形參
1.形參的定義方式 類似于變量的(不需要任何關(guān)鍵字)
2.形參默認未定義任何值時 - undefined
實參:函數(shù)調(diào)用時實際傳入的參數(shù)是函數(shù)的實際參數(shù) 簡稱實參 簡單的說 就是調(diào)用函數(shù)時使用的參數(shù)就是實參
function fun( one, two){ console.log( one, two); } fun(1, 2); //輸出 3 //定義函數(shù)fun時 one和two就是函數(shù)的形參;調(diào)用fun時 1和2就是函數(shù)的實參
形參與實參的區(qū)別:
1.形參的個數(shù)與實參不一定是一致的
2.形參的個數(shù)多于實參的個數(shù) 多余的形參沒有值(默認為 undefined)
3.實參的個數(shù)多于形參的個數(shù) 多余的實參沒有對應(yīng)的形參
4.形參與實參根據(jù)站位符進行一一對應(yīng)
函數(shù)的return語句:
1.并不是必要的 可有可無
2.作用:作為函數(shù)的返回值(數(shù)據(jù)內(nèi)容)
3.用法:一般會被編寫在函數(shù)體的最后面
4.的確允許不編寫在函數(shù)體的最后面
5.一旦return語句不在函數(shù)體的最后面 return語句之后的代碼都不再執(zhí)行
function fun(){ console.log("這是一個函數(shù)"); return 100; } console.log(fun());/* 打印函數(shù)調(diào)用的結(jié)果 */ console.log(fun);/* 打印變量的值 */ function fn(){ console.log("這是return語句之前..."); return; console.log("這是return語句之后..."); } var result = fn(); console.log(result);預(yù)定義函數(shù)
JavaScript預(yù)定義了一組函數(shù) 又稱為全局函數(shù) 允許直接使用
eval()函數(shù)
eval()函數(shù)用于執(zhí)行以字符串(String)形式出現(xiàn)的JavaScript代碼
作用:講一個字符串類型的JavaScript代碼轉(zhuǎn)換為真正的JavaScript代碼
var str = "console.log("這是一段代碼...")"; eval(str);
decodeURI()函數(shù)
對已編碼的統(tǒng)一資源標識符(URI)進行解碼 并返回其非編碼形式
var uri="http://www.qianduan.com/web%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91"; var decode=decodeURI(uri); /*輸出結(jié)果:http://www.qianduan.com/web前端開發(fā),對后面的編碼進行解碼成中文*/ console.log(decode);
encodeURI()函數(shù)
對統(tǒng)一資源標識符(URI)進行編碼 并返回編碼后的URI字符串
var uri="http://www.qianduan.com/web前端開發(fā)"; var encode=encodeURI(uri); /*輸出結(jié)果:http://www.qianduan.com/web%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91 對后面中文部分進行編碼 */ console.log(encode);作用域
作用域是什么
變量和函數(shù)都具有作用域 作用域就是變量和函數(shù)的可被訪問的范圍 控制著變量和函數(shù)的可見性和生命周期
變量的作用域可被分為全局作用域和局部作用域(函數(shù)作用域) 如果變量是被定義在全局作用域的話 在JavaScript代碼中的任何位置都可以訪問該變量 如果變量被定義在指定函數(shù)內(nèi)部 在JavaScript代碼中只能在該函數(shù)內(nèi)部訪問該變量
函數(shù)的作用域也可被分為全局作用域和局部作用域(函數(shù)作用域) 被定義在指定函數(shù)內(nèi)部的函數(shù)被稱為局部函數(shù)或內(nèi)部函數(shù)
全局變量
在所有函數(shù)之外聲明的變量 叫做全局變量 因為他可以被當前文檔中的其他代碼所訪問
var str="wolongqianduan";//定義全局變量str //在全局作用域訪問全局變量str //輸出結(jié)果:字符串的wolongqianduan console.log(str); function fun(){ //在函數(shù)作用域訪問全局變量str //輸出結(jié)果:字符串的wolongqianduan console.log(str); } //調(diào)用fun fun();
局部變量
在函數(shù)內(nèi)部聲明的變量 叫做局部聲明 因為它只能在該函數(shù)內(nèi)部訪問
var num = 200; /* * 局部變量 - 作用于當前函數(shù)作用域中 * 局部變量的值 - 只能在當前函數(shù)作用域進行初始化 * 函數(shù)的參數(shù) - 作用于當前函數(shù)體中 * 參數(shù)的值(實參) - 在全局作用域中傳遞的 */ function fun(a){ var v = 100; console.log(v + a); } fun(num);
按值傳遞
按值傳遞就是指將實參變量的值復(fù)制一份副本給函數(shù)的形參變量 在JavaScript中為函數(shù)傳遞參數(shù)是 都是按值傳遞的
如果向函數(shù)傳遞的參數(shù)是原始類型數(shù)據(jù) 則在函數(shù)中修改參數(shù)變量的值 不會影響外部實參的變量
/* 按值傳遞 */ var num = 100;/* 定義一個全局變量 */ /* 定義一個函數(shù) */ function fun(num){/* 形參 */ num++; console.log("這是函數(shù)內(nèi)部的值: " + num);// 101 } /* 調(diào)用指定函數(shù) - 實參傳遞的是全局變量的值 */ fun(num);/* 實參 */ /* 調(diào)用指定全局變量 */ console.log("這是全局作用域的值: " + num);// 100 var v = 200; function fn(){ v++; } fn(); console.log(v);// 201聲明提前
JavaScript變量的另一種特別之處 可以引用后面聲明的變量 而不會引發(fā)異常 這一概念成為變量聲明提前
JavaScript變量感覺上是被舉起或提升到了所有函數(shù)和語句之前 然而提升后的變量將返回undefined值 所以即使在使用或引用某個變量之后存在聲明和初始化操作 仍得到undefined值
全局變量與局部變量聲明
/* 聲明提前 console.log(num); - 先調(diào)用 var num = 100; - 再定義 以上代碼等價于以下代碼 var num; - 定義變量,但未初始化值 console.log(num); - 調(diào)用變量 num = 100; - 變量初始化值 */ console.log(num);// undefined var num = 100;/* 定義全局變量 */ /* 定義函數(shù) */ function fun(){ // 全局變量與局部變量同名時 - 在當前函數(shù)作用域中只能訪問局部變量 console.log(num);// undefined var num = 200;/* 定義局部變量 */ // 就近原則 console.log(num);// 200 } /* 調(diào)用函數(shù) */ fun(); // 局部變量在全局作用域中無法訪問 - 只能訪問全局變量 console.log(num);// 100函數(shù)的作用域
全局函數(shù)
函數(shù)與變量類似 具有全局作用域和函數(shù)作用域(局部作用域)與全局變量相似 全局函數(shù)是被定義在全局作用域的 任何位置都可以訪問或調(diào)用該函數(shù)
function fun(num1,num2){ console.log(num1+num2);//輸出 3 } fun(1,2);
內(nèi)部函數(shù)
一個函數(shù)被定義在另一個函數(shù)的內(nèi)部 被稱為局部函數(shù)或者內(nèi)部函數(shù) 與變量相似 局部函數(shù)只能在當前函數(shù)內(nèi)部訪問 而不能在全局作用域中被訪問
function outer(){//全局函數(shù) function inner(){//局部函數(shù) console.log("inner"); } inner();//調(diào)用正常 } inner();//輸出報錯
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96871.html
摘要:最近剛剛看完了你不知道的上卷,對有了更進一步的了解。你不知道的上卷由兩部分組成,第一部分是作用域和閉包,第二部分是和對象原型。附錄詞法這一章并沒有說明機制,只是介紹了中的箭頭函數(shù)引入的行為詞法。第章混合對象類類理論類的機制類的繼承混入。 最近剛剛看完了《你不知道的 JavaScript》上卷,對 JavaScript 有了更進一步的了解。 《你不知道的 JavaScript》上卷由兩部...
摘要:也毫不例外,但在中作用域的特性與其他高級語言稍有不同,這是很多學(xué)習(xí)者久久難以理清的一個核心知識點。主要使用的是函數(shù)作用域。 關(guān)于作用域:About Scope 作用域是程序設(shè)計里的基礎(chǔ)特性,是作用域使得程序運行時可以使用變量存儲值、記錄和改變程序的狀態(tài)。JavaScript 也毫不例外,但在 JavaScript 中作用域的特性與其他高級語言稍有不同,這是很多學(xué)習(xí)者久久難以理清的一個核...
摘要:作用域是最重要的概念之一,想要學(xué)好就需要理解作用域和作用域鏈的工作原理。腳本錯誤腳本錯誤由此可以引發(fā)作用域鏈的概念在中,函數(shù)也是對象,實際上,里一切都是對象。當一個函數(shù)創(chuàng)建后,它的作用域鏈會被創(chuàng)建此函數(shù)的作用域中可訪問的數(shù)據(jù)對象填充。 作用域是JavaScript最重要的概念之一,想要學(xué)好JavaScript就需要理解JavaScript作用域和作用域 鏈的工作原理。 1. 全局作...
摘要:作用域是最重要的概念之一,想要學(xué)好就需要理解作用域和作用域鏈的工作原理。腳本錯誤腳本錯誤由此可以引發(fā)作用域鏈的概念在中,函數(shù)也是對象,實際上,里一切都是對象。當一個函數(shù)創(chuàng)建后,它的作用域鏈會被創(chuàng)建此函數(shù)的作用域中可訪問的數(shù)據(jù)對象填充。 作用域是JavaScript最重要的概念之一,想要學(xué)好JavaScript就需要理解JavaScript作用域和作用域 鏈的工作原理。 1. 全局作...
摘要:作用域是最重要的概念之一,想要學(xué)好就需要理解作用域和作用域鏈的工作原理。腳本錯誤腳本錯誤由此可以引發(fā)作用域鏈的概念在中,函數(shù)也是對象,實際上,里一切都是對象。當一個函數(shù)創(chuàng)建后,它的作用域鏈會被創(chuàng)建此函數(shù)的作用域中可訪問的數(shù)據(jù)對象填充。 作用域是JavaScript最重要的概念之一,想要學(xué)好JavaScript就需要理解JavaScript作用域和作用域 鏈的工作原理。 1. 全局作...
閱讀 3268·2021-10-27 14:20
閱讀 2536·2021-10-08 10:05
閱讀 1635·2021-09-09 09:33
閱讀 2908·2019-08-30 13:16
閱讀 1445·2019-08-29 18:34
閱讀 1180·2019-08-29 10:58
閱讀 1233·2019-08-28 18:22
閱讀 1231·2019-08-26 13:33