JavaScript中重名的函數(shù)與對(duì)象示例詳析
前言
本文主要給大家介紹了關(guān)于JavaScript中重名的函數(shù)與對(duì)象的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
JavaScript 允許重復(fù)聲明變量,后聲明的覆蓋之前的。
var a = 1; var a = 'x'; console.log(a); //輸出'x'
JavaScript允許重復(fù)定義函數(shù)。
JavaScript沒(méi)有重載這個(gè)概念,它僅依據(jù)函數(shù)名來(lái)區(qū)分函數(shù)。
后定義的同名函數(shù)覆蓋之前的,與參數(shù)無(wú)關(guān)。
function test() {
console.log("test");
}
test(); //輸出 "test arg0 + undefined"
function test(arg1) {
console.log("test arg" + arguments.length + " + " + arg1);
}
test(1,2); //輸出 "test arg2 + 1"
實(shí)參個(gè)數(shù)如果比形參少,那么剩下的默認(rèn)賦值為undefined;如果實(shí)參傳的比形參數(shù)量多,那么是全部都會(huì)被傳進(jìn)去的,只不過(guò)沒(méi)有對(duì)應(yīng)的形參可以引用(但可以用arguments來(lái)獲取剩下的參數(shù))
function test(arg1) {
for(var i=0; i<arguments.length; i++) {
console.log(arguments[i]);
}
}
test(1,2); //輸出 1 2
變量與函數(shù)重名的時(shí)候,變量生效
這涉及到了變量和函數(shù)的預(yù)解析:
- 變量聲明會(huì)被頂置,函數(shù)聲明也會(huì)被頂置且比變量更先聲明。
- 變量的聲明和賦值語(yǔ)句一起寫(xiě)時(shí),JS引擎在解析時(shí),會(huì)將其拆成聲明和賦值2部分,聲明置頂,賦值保留在原來(lái)位置。
- 聲明過(guò)的變量不會(huì)再重復(fù)聲明。
var a = 100;
function a() {
return "function";
}
console.log(a); //輸出 100
console.log(a());
/*
報(bào)錯(cuò)
Uncaught TypeError: a is not a function
(anonymous function) @test.html:9
*/
JS中有兩種函數(shù),一種是普通函數(shù),一種是函數(shù)對(duì)象。下面的這種就是“函數(shù)對(duì)象”,它實(shí)際上是聲明一個(gè)匿名函數(shù),然后將該函數(shù)的init方法賦值給該變量。
var a = 100;
var a = function() {
return "function";
}
console.log(a);
/*
輸出
function() {
return "function";
}
*/
console.log(a()); //輸出 "function"
函數(shù)與內(nèi)部變量重名
定義普通函數(shù),即在window變量下,定義一個(gè)key,它的名字為該函數(shù)名,值為該函數(shù)的地址。函數(shù)內(nèi)部的this指向window對(duì)象。
function a() {
console.log(this); //輸出 window{...}
this.a = 1; //即 window.a = 1,此時(shí)window下的function a已經(jīng)被該變量覆蓋了。
var a = 5; //下面的這幾個(gè)變量都是局部變量,僅在花括號(hào)范圍內(nèi)有效。
a = 10;
var v = "value"
return "function";
}
console.log(a); //輸出 function a {...}
console.log(a()); //輸出 "function"
console.log(a); //輸出 1
console.log(v);
/*
輸出
Uncaught ReferenceError: v is not defined
(anonymous function) @ mycolor.html:15
*/
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
基于mpvue小程序使用echarts畫(huà)折線圖的方法示例
這篇文章主要介紹了基于mpvue小程序使用echarts畫(huà)折線圖的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
WordPress中利用AJAX異步獲取評(píng)論用戶(hù)頭像的方法
這篇文章主要介紹了WordPress中利用AJAX異步獲取評(píng)論用戶(hù)頭像的方法,文中的例子是輸入郵箱即可獲取頭像,需要的朋友可以參考下2016-01-01
JavaScript實(shí)現(xiàn)審核流程狀態(tài)的動(dòng)態(tài)顯示進(jìn)度條
對(duì)于有很多流程的東西,我們希望能夠根據(jù)不同的階段,用流程條對(duì)應(yīng)地進(jìn)行顯示,非常直觀,給用戶(hù)帶來(lái)極好的用戶(hù)體驗(yàn),下面小編給大家分享JavaScript實(shí)現(xiàn)審核流程狀態(tài)的動(dòng)態(tài)顯示進(jìn)度條功能,需要的的朋友參考下2017-03-03
JS動(dòng)態(tài)加載當(dāng)前時(shí)間的方法
這篇文章主要介紹了JS動(dòng)態(tài)加載當(dāng)前時(shí)間的方法,涉及html的onload方法及javascript操作時(shí)間的技巧,需要的朋友可以參考下2015-02-02
多種方法實(shí)現(xiàn)load加載完成后把圖片一次性顯示出來(lái)
如何一個(gè)load 加載完成后把圖片一次性顯示出來(lái),下面有個(gè)不錯(cuò)的方法,希望對(duì)大家有所幫助2014-02-02
js實(shí)現(xiàn)延時(shí)加載Flash的方法
這篇文章主要介紹了js實(shí)現(xiàn)延時(shí)加載Flash的方法,較為詳細(xì)的分析了通過(guò)元素替換實(shí)現(xiàn)JavaScript延時(shí)加載flash的相關(guān)原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
微信小程序通過(guò)js實(shí)現(xiàn)瀑布流布局詳解
這篇文章主要介紹了微信小程序通過(guò)js實(shí)現(xiàn)瀑布流布局詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
location.search在客戶(hù)端獲取Url參數(shù)的方法
最近一直在寫(xiě)html,剛接觸到,感覺(jué)挺復(fù)雜的。。比如傳參,在.net里可以直接用Request接受,而在html中還要經(jīng)過(guò)處理,找了一些資料,寫(xiě)了個(gè)方法。2010-06-06

