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