摘要:函數(shù)函數(shù)也是一個對象,對象能做的函數(shù)都能做。在函數(shù)中使用關(guān)鍵字聲明的變量是局部變量,局部變量只能在函數(shù)內(nèi)部使用,外部無法訪問。
函數(shù)
- 函數(shù)也是一個對象,對象能做的函數(shù)都能做。 - 函數(shù)中可以保存可執(zhí)行的代碼,并且在需要的時候進行調(diào)用。 - 使用typeof檢查函數(shù)時,會返回 function
function fun(){ return "function" } console.log(typeof fun); // function函數(shù)的創(chuàng)建 1.函數(shù)聲明
function函數(shù)名(形參1,形參2,...形參N){
函數(shù)體
}
function sum (num1,num2){ return num1+num2 }2.函數(shù)表達式
var 函數(shù)名=function(形參1,形參2,...形參N){
函數(shù)體
}
var sum=function(num1,num2){ return num1+num2 }函數(shù)的調(diào)用
函數(shù)調(diào)用:函數(shù)對象+()
function fun(){ console.log("我是一個function"); } fun() //我是一個function函數(shù)的參數(shù)
形參(形式參數(shù))
- 定義函數(shù)時可以在函數(shù)定義數(shù)量不等的形參,多個形參之間使用,隔開 - 定義形參就相當于在函數(shù)中聲明了對應(yīng)的變量但是并不賦值 - 形參會在函數(shù)調(diào)用的時候賦值
實參(實際參數(shù))
- 函數(shù)調(diào)用時,可以在()傳遞實參 - 實參會賦值給對應(yīng)的形參 - js解析器不會檢查實參的類型和數(shù)量 - 可以傳遞任意類型的實參(基本數(shù)據(jù)類型、對象、函數(shù)) - 可以傳遞任意數(shù)量的實參返回值
- 在函數(shù)中可以通過 return 來設(shè)置返回值 - 語法:return 值; - 返回值將會作為函數(shù)的執(zhí)行結(jié)果返回,可以定義一個變量來接收返回值 - 如果return后不跟值,或者不寫return則相當于return undefined - return后的所有的代碼都不會執(zhí)行,return一執(zhí)行函數(shù)立即結(jié)束 - 任何類型的值都可以作為函數(shù)的返回值
function num(){ console.log("這是一個函數(shù)") return 100; } console.log(fun()) //這是一個函數(shù) //100
- 函數(shù)的return語句的確允許不編寫在函數(shù)體的最后面 - 一旦return語句不在函數(shù)體的最后面 - return語句之后的代碼都不再執(zhí)行
function fn(){ console.log("這是return語句之前..."); return; console.log("這是return語句之后..."); } console.log(fn()); // 這是return語句之前... //undefined作用域
作用域就是變量的作用范圍,一個變量在哪些范圍中可見
全局作用域- 全局作用域在頁面加載時創(chuàng)建,在頁面關(guān)閉時銷毀。 - 直接在script標簽中編寫的內(nèi)容,都在全局作用域中 - 在頁面中有一個全局對象window,代表的是整個的瀏覽器窗口 在全局作用域中創(chuàng)建的變量都會作為window的屬性保存 在全局作用域中創(chuàng)建的函數(shù)都會作為window的方法保存 - 在全局作用域中創(chuàng)建的變量和函數(shù)都是全局變量和函數(shù),可以在頁面的任意位置訪問。
var a=10; console.log(a); //10函數(shù)作用域(局部作用域)
- 函數(shù)作用域在函數(shù)調(diào)用時創(chuàng)建,在調(diào)用結(jié)束時銷毀。 - 函數(shù)每執(zhí)行一次就會創(chuàng)建一個新的函數(shù)作用域。 - 在函數(shù)中使用var關(guān)鍵字聲明的變量是局部變量,局部變量只能在函數(shù)內(nèi)部使用,外部無法訪問。 - 如果不使用var關(guān)鍵字聲明變量,則變量會變成全局變量。
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;對象
- 對象是一個區(qū)別于5種基本數(shù)據(jù)類型的又一種類型 - 對象是一種復合數(shù)據(jù)類型,在對象中可以保存不同類型的屬性對象的使用:
創(chuàng)建對象:
構(gòu)造函數(shù)方式: 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
向?qū)ο笾刑砑?修改)屬性:
對象["屬性名"]
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關(guān)鍵字 如果屬性存在返回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 }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/96912.html
摘要:執(zhí)行上下文作用域鏈和內(nèi)部機制一執(zhí)行上下文執(zhí)行上下文是代碼的執(zhí)行環(huán)境,它包括的值變量對象和函數(shù)。創(chuàng)建作用域鏈一旦可變對象創(chuàng)建完,引擎就開始初始化作用域鏈。 執(zhí)行上下文、作用域鏈和JS內(nèi)部機制(Execution context, Scope chain and JavaScript internals) 一、執(zhí)行上下文 執(zhí)行上下文(Execution context EC)是js代碼的執(zhí)...
摘要:實際上就是做了這樣一件事情顯式的指定是回顧一下隱式模式顯示模式觀點里所有函數(shù)都接受個參數(shù)第一個第二個是函數(shù)被調(diào)用時一定會有這個參數(shù)如果你用調(diào)用函數(shù)就是顯式的傳遞和如果你用語法直接調(diào)用函數(shù)那就去幫你偷偷的傳遞。 JS面向?qū)ο笾総his】 (對象和函數(shù)之間的關(guān)系) 上一篇,談了對象和對象的關(guān)系,現(xiàn)在我們談?wù)剬ο蠛秃瘮?shù)的關(guān)系 先說結(jié)論,也就是觀點1 觀點1: JS里函數(shù)和對象沒有關(guān)系,J...
摘要:給普通的操作指定回調(diào)函數(shù)對象的最大優(yōu)點,就是它把這一套回調(diào)函數(shù)接口,從操作擴展到了所有操作。方法用于指定對象狀態(tài)為已失敗時的回調(diào)函數(shù)。執(zhí)行完畢執(zhí)行成功執(zhí)行失敗接收一個或多個對象作為參數(shù),為其指定回調(diào)函數(shù)。 什么是deferred對象 開發(fā)網(wǎng)站的過程中,我們經(jīng)常遇到某些耗時很長的javascript操作。其中,既有異步的操作(比如ajax讀取服務(wù)器數(shù)據(jù)),也有同步的操作(比如遍歷一個大型...
摘要:所以覺得把這個執(zhí)行的詳細過程整理一下,幫助更好的理解。類似的語法報錯的如下圖所示三預編譯階段代碼塊通過語法分析階段之后,語法都正確的下回進入預編譯階段。另開出新文章詳細分析,主要介紹執(zhí)行階段中的同步任務(wù)執(zhí)行和異步任務(wù)執(zhí)行機制事件循環(huán)。 一、概述 js是一種非常靈活的語言,理解js引擎的執(zhí)行過程對于我們學習js是非常有必要的??戳撕芏噙@方便文章,大多數(shù)是講的是事件循環(huán)(event loo...
摘要:所以覺得把這個執(zhí)行的詳細過程整理一下,幫助更好的理解。類似的語法報錯的如下圖所示三預編譯階段代碼塊通過語法分析階段之后,語法都正確的下回進入預編譯階段。另開出新文章詳細分析,主要介紹執(zhí)行階段中的同步任務(wù)執(zhí)行和異步任務(wù)執(zhí)行機制事件循環(huán)。 一、概述 js是一種非常靈活的語言,理解js引擎的執(zhí)行過程對于我們學習js是非常有必要的??戳撕芏噙@方便文章,大多數(shù)是講的是事件循環(huán)(event loo...
閱讀 3681·2021-10-09 09:41
閱讀 2833·2021-10-08 10:18
閱讀 2284·2021-09-10 10:51
閱讀 2768·2021-09-10 10:50
閱讀 957·2021-09-09 09:33
閱讀 3503·2021-09-06 15:14
閱讀 3166·2019-08-30 11:06
閱讀 3361·2019-08-29 14:04