最近同事問了一個問題,說在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
變數與函數重名的時候,變數生效
這牽涉到了變數和函數的預解析: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中文網其他相關文章!