摘要:函數函數也是一個對象,對象能做的函數都能做。在函數中使用關鍵字聲明的變量是局部變量,局部變量只能在函數內部使用,外部無法訪問。
函數
- 函數也是一個對象,對象能做的函數都能做。 - 函數中可以保存可執行的代碼,并且在需要的時候進行調用。 - 使用typeof檢查函數時,會返回 function
function fun(){ return "function" } console.log(typeof fun); // function函數的創建 1.函數聲明
function函數名(形參1,形參2,...形參N){
函數體
}
function sum (num1,num2){ return num1+num2 }2.函數表達式
var 函數名=function(形參1,形參2,...形參N){
函數體
}
var sum=function(num1,num2){ return num1+num2 }函數的調用
函數調用:函數對象+()
function fun(){ console.log("我是一個function"); } fun() //我是一個function函數的參數
形參(形式參數)
- 定義函數時可以在函數定義數量不等的形參,多個形參之間使用,隔開 - 定義形參就相當于在函數中聲明了對應的變量但是并不賦值 - 形參會在函數調用的時候賦值
實參(實際參數)
- 函數調用時,可以在()傳遞實參 - 實參會賦值給對應的形參 - js解析器不會檢查實參的類型和數量 - 可以傳遞任意類型的實參(基本數據類型、對象、函數) - 可以傳遞任意數量的實參返回值
- 在函數中可以通過 return 來設置返回值 - 語法:return 值; - 返回值將會作為函數的執行結果返回,可以定義一個變量來接收返回值 - 如果return后不跟值,或者不寫return則相當于return undefined - return后的所有的代碼都不會執行,return一執行函數立即結束 - 任何類型的值都可以作為函數的返回值
function num(){ console.log("這是一個函數") return 100; } console.log(fun()) //這是一個函數 //100
- 函數的return語句的確允許不編寫在函數體的最后面 - 一旦return語句不在函數體的最后面 - return語句之后的代碼都不再執行
function fn(){ console.log("這是return語句之前..."); return; console.log("這是return語句之后..."); } console.log(fn()); // 這是return語句之前... //undefined作用域
作用域就是變量的作用范圍,一個變量在哪些范圍中可見
全局作用域- 全局作用域在頁面加載時創建,在頁面關閉時銷毀。 - 直接在script標簽中編寫的內容,都在全局作用域中 - 在頁面中有一個全局對象window,代表的是整個的瀏覽器窗口 在全局作用域中創建的變量都會作為window的屬性保存 在全局作用域中創建的函數都會作為window的方法保存 - 在全局作用域中創建的變量和函數都是全局變量和函數,可以在頁面的任意位置訪問。
var a=10; console.log(a); //10函數作用域(局部作用域)
- 函數作用域在函數調用時創建,在調用結束時銷毀。 - 函數每執行一次就會創建一個新的函數作用域。 - 在函數中使用var關鍵字聲明的變量是局部變量,局部變量只能在函數內部使用,外部無法訪問。 - 如果不使用var關鍵字聲明變量,則變量會變成全局變量。
var a=10; function fun(){ var b=20; console.log(a); //10 console.log(b); //20 }
全局作用域不能訪問局部變量
function fun(){ var a=10; } console.log(a); // a is not defined;對象
- 對象是一個區別于5種基本數據類型的又一種類型 - 對象是一種復合數據類型,在對象中可以保存不同類型的屬性對象的使用:
創建對象:
構造函數方式: var obj = new Object();
對象初始化器方式: var obj={};
Object.create()方法: Object.create();
讀取對象的屬性:
對象.屬性名(不適用于復雜命名的屬性名稱)
var person ={ sex:"man", age:30 } console.log(person.sex); //man
對象["屬性名"] (適用于復雜命名的屬性名稱)
var obj = { "Type-Content" : "text/html", } console.log(obj["Type-Content"]);// text/html
向對象中添加(修改)屬性:
對象["屬性名"]
var iLike={ hobby:"聽歌" } } iLike["hobby"]="睡覺"; console.log(iLike.hobby) //睡覺
對象.屬性名
var person={ name:"55開" } person.name="PDD"; console.log(person,name) //PDD
枚舉屬性
for...in:該方法依次訪問一個對象及其原型鏈中所有可枚舉的屬性
var obj={ name:"孫悟空", age:"18", hobby:function(){ console.log("打妖怪") } } for(var i in obj ){ console.log(i) // name age hobby }檢測對象的屬性
- 使用in關鍵字 如果屬性存在返回true 不存在返回false
var obj ={ name: "javascript" }; console.log("name" in obj); //true
- 使用Object對象的hasOwnPhasOwnProperty()方法 如果屬性存在返回true 不存在返回false
var obj ={ name: "javascript" }; console.log(obj.hasOwnProperty("name")); //true
- 使用undefined判斷 如果屬性存在返回false 不存在返回true
var obj ={ name: "javascript" }; console.log(obj.name === undefined); // false
- 使用if語句進行判斷
var obj ={ name: "javascript" }; if(obj.name){console.log("屬性存在")} //屬性存在刪除對象的屬性
可以用delete操作符刪除一個不是繼承而來的屬性
var obj=new Object(); obj.name="孫悟空"; obj.age="18"; delete obj.age; //刪除對象的自有屬性 for(var i in obj){ console.log(i); //name }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96912.html
摘要:執行上下文作用域鏈和內部機制一執行上下文執行上下文是代碼的執行環境,它包括的值變量對象和函數。創建作用域鏈一旦可變對象創建完,引擎就開始初始化作用域鏈。 執行上下文、作用域鏈和JS內部機制(Execution context, Scope chain and JavaScript internals) 一、執行上下文 執行上下文(Execution context EC)是js代碼的執...
摘要:實際上就是做了這樣一件事情顯式的指定是回顧一下隱式模式顯示模式觀點里所有函數都接受個參數第一個第二個是函數被調用時一定會有這個參數如果你用調用函數就是顯式的傳遞和如果你用語法直接調用函數那就去幫你偷偷的傳遞。 JS面向對象之三【this】 (對象和函數之間的關系) 上一篇,談了對象和對象的關系,現在我們談談對象和函數的關系 先說結論,也就是觀點1 觀點1: JS里函數和對象沒有關系,J...
摘要:給普通的操作指定回調函數對象的最大優點,就是它把這一套回調函數接口,從操作擴展到了所有操作。方法用于指定對象狀態為已失敗時的回調函數。執行完畢執行成功執行失敗接收一個或多個對象作為參數,為其指定回調函數。 什么是deferred對象 開發網站的過程中,我們經常遇到某些耗時很長的javascript操作。其中,既有異步的操作(比如ajax讀取服務器數據),也有同步的操作(比如遍歷一個大型...
摘要:所以覺得把這個執行的詳細過程整理一下,幫助更好的理解。類似的語法報錯的如下圖所示三預編譯階段代碼塊通過語法分析階段之后,語法都正確的下回進入預編譯階段。另開出新文章詳細分析,主要介紹執行階段中的同步任務執行和異步任務執行機制事件循環。 一、概述 js是一種非常靈活的語言,理解js引擎的執行過程對于我們學習js是非常有必要的。看了很多這方便文章,大多數是講的是事件循環(event loo...
摘要:所以覺得把這個執行的詳細過程整理一下,幫助更好的理解。類似的語法報錯的如下圖所示三預編譯階段代碼塊通過語法分析階段之后,語法都正確的下回進入預編譯階段。另開出新文章詳細分析,主要介紹執行階段中的同步任務執行和異步任務執行機制事件循環。 一、概述 js是一種非常靈活的語言,理解js引擎的執行過程對于我們學習js是非常有必要的。看了很多這方便文章,大多數是講的是事件循環(event loo...
閱讀 3532·2021-10-09 09:41
閱讀 2739·2021-10-08 10:18
閱讀 2174·2021-09-10 10:51
閱讀 2674·2021-09-10 10:50
閱讀 771·2021-09-09 09:33
閱讀 3377·2021-09-06 15:14
閱讀 3012·2019-08-30 11:06
閱讀 3242·2019-08-29 14:04