摘要:函數(shù)函數(shù)也是一個(gè)對(duì)象,對(duì)象能做的函數(shù)都能做。在函數(shù)中使用關(guān)鍵字聲明的變量是局部變量,局部變量只能在函數(shù)內(nèi)部使用,外部無(wú)法訪(fǎng)問(wèn)。
函數(shù)
- 函數(shù)也是一個(gè)對(duì)象,對(duì)象能做的函數(shù)都能做。 - 函數(shù)中可以保存可執(zhí)行的代碼,并且在需要的時(shí)候進(jìn)行調(diào)用。 - 使用typeof檢查函數(shù)時(shí),會(huì)返回 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ù)表達(dá)式
var 函數(shù)名=function(形參1,形參2,...形參N){
函數(shù)體
}
var sum=function(num1,num2){ return num1+num2 }函數(shù)的調(diào)用
函數(shù)調(diào)用:函數(shù)對(duì)象+()
function fun(){ console.log("我是一個(gè)function"); } fun() //我是一個(gè)function函數(shù)的參數(shù)
形參(形式參數(shù))
- 定義函數(shù)時(shí)可以在函數(shù)定義數(shù)量不等的形參,多個(gè)形參之間使用,隔開(kāi) - 定義形參就相當(dāng)于在函數(shù)中聲明了對(duì)應(yīng)的變量但是并不賦值 - 形參會(huì)在函數(shù)調(diào)用的時(shí)候賦值
實(shí)參(實(shí)際參數(shù))
- 函數(shù)調(diào)用時(shí),可以在()傳遞實(shí)參 - 實(shí)參會(huì)賦值給對(duì)應(yīng)的形參 - js解析器不會(huì)檢查實(shí)參的類(lèi)型和數(shù)量 - 可以傳遞任意類(lèi)型的實(shí)參(基本數(shù)據(jù)類(lèi)型、對(duì)象、函數(shù)) - 可以傳遞任意數(shù)量的實(shí)參返回值
- 在函數(shù)中可以通過(guò) return 來(lái)設(shè)置返回值 - 語(yǔ)法:return 值; - 返回值將會(huì)作為函數(shù)的執(zhí)行結(jié)果返回,可以定義一個(gè)變量來(lái)接收返回值 - 如果return后不跟值,或者不寫(xiě)return則相當(dāng)于return undefined - return后的所有的代碼都不會(huì)執(zhí)行,return一執(zhí)行函數(shù)立即結(jié)束 - 任何類(lèi)型的值都可以作為函數(shù)的返回值
function num(){ console.log("這是一個(gè)函數(shù)") return 100; } console.log(fun()) //這是一個(gè)函數(shù) //100
- 函數(shù)的return語(yǔ)句的確允許不編寫(xiě)在函數(shù)體的最后面 - 一旦return語(yǔ)句不在函數(shù)體的最后面 - return語(yǔ)句之后的代碼都不再執(zhí)行
function fn(){ console.log("這是return語(yǔ)句之前..."); return; console.log("這是return語(yǔ)句之后..."); } console.log(fn()); // 這是return語(yǔ)句之前... //undefined作用域
作用域就是變量的作用范圍,一個(gè)變量在哪些范圍中可見(jiàn)
全局作用域- 全局作用域在頁(yè)面加載時(shí)創(chuàng)建,在頁(yè)面關(guān)閉時(shí)銷(xiāo)毀。 - 直接在script標(biāo)簽中編寫(xiě)的內(nèi)容,都在全局作用域中 - 在頁(yè)面中有一個(gè)全局對(duì)象window,代表的是整個(gè)的瀏覽器窗口 在全局作用域中創(chuàng)建的變量都會(huì)作為window的屬性保存 在全局作用域中創(chuàng)建的函數(shù)都會(huì)作為window的方法保存 - 在全局作用域中創(chuàng)建的變量和函數(shù)都是全局變量和函數(shù),可以在頁(yè)面的任意位置訪(fǎng)問(wèn)。
var a=10; console.log(a); //10函數(shù)作用域(局部作用域)
- 函數(shù)作用域在函數(shù)調(diào)用時(shí)創(chuàng)建,在調(diào)用結(jié)束時(shí)銷(xiāo)毀。 - 函數(shù)每執(zhí)行一次就會(huì)創(chuàng)建一個(gè)新的函數(shù)作用域。 - 在函數(shù)中使用var關(guān)鍵字聲明的變量是局部變量,局部變量只能在函數(shù)內(nèi)部使用,外部無(wú)法訪(fǎng)問(wèn)。 - 如果不使用var關(guān)鍵字聲明變量,則變量會(huì)變成全局變量。
var a=10; function fun(){ var b=20; console.log(a); //10 console.log(b); //20 }
全局作用域不能訪(fǎng)問(wèn)局部變量
function fun(){ var a=10; } console.log(a); // a is not defined;對(duì)象
- 對(duì)象是一個(gè)區(qū)別于5種基本數(shù)據(jù)類(lèi)型的又一種類(lèi)型 - 對(duì)象是一種復(fù)合數(shù)據(jù)類(lèi)型,在對(duì)象中可以保存不同類(lèi)型的屬性對(duì)象的使用:
創(chuàng)建對(duì)象:
構(gòu)造函數(shù)方式: var obj = new Object();
對(duì)象初始化器方式: var obj={};
Object.create()方法: Object.create();
讀取對(duì)象的屬性:
對(duì)象.屬性名(不適用于復(fù)雜命名的屬性名稱(chēng))
var person ={ sex:"man", age:30 } console.log(person.sex); //man
對(duì)象["屬性名"] (適用于復(fù)雜命名的屬性名稱(chēng))
var obj = { "Type-Content" : "text/html", } console.log(obj["Type-Content"]);// text/html
向?qū)ο笾刑砑?修改)屬性:
對(duì)象["屬性名"]
var iLike={ hobby:"聽(tīng)歌" } } iLike["hobby"]="睡覺(jué)"; console.log(iLike.hobby) //睡覺(jué)
對(duì)象.屬性名
var person={ name:"55開(kāi)" } person.name="PDD"; console.log(person,name) //PDD
枚舉屬性
for...in:該方法依次訪(fǎng)問(wèn)一個(gè)對(duì)象及其原型鏈中所有可枚舉的屬性
var obj={ name:"孫悟空", age:"18", hobby:function(){ console.log("打妖怪") } } for(var i in obj ){ console.log(i) // name age hobby }檢測(cè)對(duì)象的屬性
- 使用in關(guān)鍵字 如果屬性存在返回true 不存在返回false
var obj ={ name: "javascript" }; console.log("name" in obj); //true
- 使用Object對(duì)象的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語(yǔ)句進(jìn)行判斷
var obj ={ name: "javascript" }; if(obj.name){console.log("屬性存在")} //屬性存在刪除對(duì)象的屬性
可以用delete操作符刪除一個(gè)不是繼承而來(lái)的屬性
var obj=new Object(); obj.name="孫悟空"; obj.age="18"; delete obj.age; //刪除對(duì)象的自有屬性 for(var i in obj){ console.log(i); //name }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96912.html
摘要:執(zhí)行上下文作用域鏈和內(nèi)部機(jī)制一執(zhí)行上下文執(zhí)行上下文是代碼的執(zhí)行環(huán)境,它包括的值變量對(duì)象和函數(shù)。創(chuàng)建作用域鏈一旦可變對(duì)象創(chuàng)建完,引擎就開(kāi)始初始化作用域鏈。 執(zhí)行上下文、作用域鏈和JS內(nèi)部機(jī)制(Execution context, Scope chain and JavaScript internals) 一、執(zhí)行上下文 執(zhí)行上下文(Execution context EC)是js代碼的執(zhí)...
摘要:實(shí)際上就是做了這樣一件事情顯式的指定是回顧一下隱式模式顯示模式觀點(diǎn)里所有函數(shù)都接受個(gè)參數(shù)第一個(gè)第二個(gè)是函數(shù)被調(diào)用時(shí)一定會(huì)有這個(gè)參數(shù)如果你用調(diào)用函數(shù)就是顯式的傳遞和如果你用語(yǔ)法直接調(diào)用函數(shù)那就去幫你偷偷的傳遞。 JS面向?qū)ο笾総his】 (對(duì)象和函數(shù)之間的關(guān)系) 上一篇,談了對(duì)象和對(duì)象的關(guān)系,現(xiàn)在我們談?wù)剬?duì)象和函數(shù)的關(guān)系 先說(shuō)結(jié)論,也就是觀點(diǎn)1 觀點(diǎn)1: JS里函數(shù)和對(duì)象沒(méi)有關(guān)系,J...
摘要:給普通的操作指定回調(diào)函數(shù)對(duì)象的最大優(yōu)點(diǎn),就是它把這一套回調(diào)函數(shù)接口,從操作擴(kuò)展到了所有操作。方法用于指定對(duì)象狀態(tài)為已失敗時(shí)的回調(diào)函數(shù)。執(zhí)行完畢執(zhí)行成功執(zhí)行失敗接收一個(gè)或多個(gè)對(duì)象作為參數(shù),為其指定回調(diào)函數(shù)。 什么是deferred對(duì)象 開(kāi)發(fā)網(wǎng)站的過(guò)程中,我們經(jīng)常遇到某些耗時(shí)很長(zhǎng)的javascript操作。其中,既有異步的操作(比如ajax讀取服務(wù)器數(shù)據(jù)),也有同步的操作(比如遍歷一個(gè)大型...
摘要:所以覺(jué)得把這個(gè)執(zhí)行的詳細(xì)過(guò)程整理一下,幫助更好的理解。類(lèi)似的語(yǔ)法報(bào)錯(cuò)的如下圖所示三預(yù)編譯階段代碼塊通過(guò)語(yǔ)法分析階段之后,語(yǔ)法都正確的下回進(jìn)入預(yù)編譯階段。另開(kāi)出新文章詳細(xì)分析,主要介紹執(zhí)行階段中的同步任務(wù)執(zhí)行和異步任務(wù)執(zhí)行機(jī)制事件循環(huán)。 一、概述 js是一種非常靈活的語(yǔ)言,理解js引擎的執(zhí)行過(guò)程對(duì)于我們學(xué)習(xí)js是非常有必要的??戳撕芏噙@方便文章,大多數(shù)是講的是事件循環(huán)(event loo...
摘要:所以覺(jué)得把這個(gè)執(zhí)行的詳細(xì)過(guò)程整理一下,幫助更好的理解。類(lèi)似的語(yǔ)法報(bào)錯(cuò)的如下圖所示三預(yù)編譯階段代碼塊通過(guò)語(yǔ)法分析階段之后,語(yǔ)法都正確的下回進(jìn)入預(yù)編譯階段。另開(kāi)出新文章詳細(xì)分析,主要介紹執(zhí)行階段中的同步任務(wù)執(zhí)行和異步任務(wù)執(zhí)行機(jī)制事件循環(huán)。 一、概述 js是一種非常靈活的語(yǔ)言,理解js引擎的執(zhí)行過(guò)程對(duì)于我們學(xué)習(xí)js是非常有必要的。看了很多這方便文章,大多數(shù)是講的是事件循環(huán)(event loo...
摘要:時(shí)間一晃就是數(shù)月,齊云早已把界基本情況了解了,不過(guò)至于三座大山里隱藏的謎團(tuán)卻遲遲沒(méi)有頭緒。它是界本源之一。事實(shí)上,根本沒(méi)有構(gòu)造函數(shù),或者人人都是構(gòu)造函數(shù)。所以,明白這個(gè)界的一界本源,才能在這里暢游天地之間。 自計(jì)算機(jī)宇宙誕生以來(lái),有很多大神通者在這里開(kāi)天辟地,開(kāi)創(chuàng)了很多界,有C、C++、Java等世界,它們彼此相連,其中有一處叫做JavaScript的世界,自被開(kāi)辟以來(lái)吸引了很多修行者...
閱讀 3542·2021-10-09 09:41
閱讀 2746·2021-10-08 10:18
閱讀 2183·2021-09-10 10:51
閱讀 2680·2021-09-10 10:50
閱讀 776·2021-09-09 09:33
閱讀 3384·2021-09-06 15:14
閱讀 3017·2019-08-30 11:06
閱讀 3248·2019-08-29 14:04