首頁 > web前端 > js教程 > 主體

JavaScript中重名的函數以及物件的範例

黄舟
發布: 2017-10-03 05:59:49
原創
1268 人瀏覽過

最近同事問了一個問題,說在js中如果函數與物件重名了會怎麼樣?仔細詳細這個問題值得討論一下,所以便有了這篇文章,這篇文章主要給大家介紹了關於JavaScript中重名的函數與對象的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧啊。

前言

本文主要介紹給大家介紹了關於JavaScript中重新名稱的函數與物件的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

JavaScript 允許重複宣告變量,後來宣告的覆寫之前的。


var a = 1;
var a = 'x';
console.log(a);
//输出'x'
登入後複製

JavaScript允許重複定義函數。

JavaScript沒有重載這個概念,它只依據函數名稱來區分函數。

後定義的同名函數覆寫之前的,與參數無關。


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"
登入後複製

實參個數如果比形參少,那麼剩下的預設賦值為undefined;如果實參傳的比形參數量多,那麼是全部都會被傳進去的,只不過沒有對應的形參可以引用(但可以用arguments來取得剩下的參數)


##

function test(arg1) {
 for(var i=0; i<arguments.length; i++) {
 console.log(arguments[i]);
 }
}
test(1,2); //输出 1 2
登入後複製

變數與函數重名的時候,變數生效

這牽涉到了變數和函數的預解析:


- 變數宣告會被頂置,函數宣告也會被頂置且比變數更先宣告。


- 變數的宣告和賦值語句一起寫入時,JS引擎在解析時,會將其拆成宣告和賦值2部分,宣告置頂,賦值保留在原來位置。


- 宣告過的變數不會再重複宣告。


var a = 100;
function a() {
 return "function";
}
console.log(a); //输出 100
console.log(a()); 
/*
报错
Uncaught TypeError: a is not a function
 (anonymous function) @test.html:9
*/
登入後複製

JS中有兩種函數,一種是普通函數,一種是函數物件。下面的這種就是“函數物件”,它實際上是聲明一個匿名函數,然後將該函數的init方法賦值給該變數。


var a = 100;
var a = function() {
 return "function";
}
console.log(a);
/* 
输出
function() {
 return "function";
}
*/
console.log(a()); //输出 "function"
登入後複製

函數與內部變數重名

定義普通函數,即在window變數下,定義一個key,它的名字為該函數名,值為該函數的位址。函數內部的this指向window物件。


function a() {
 console.log(this); //输出 window{...}
 this.a = 1;  //即 window.a = 1,此时window下的function a已经被该变量覆盖了。
 var a = 5;  //下面的这几个变量都是局部变量,仅在花括号范围内有效。 
 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
*/
登入後複製

#總結#

以上是JavaScript中重名的函數以及物件的範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!