首頁 web前端 js教程 淺析JavaScript中的同名識別碼優先權_javascript技巧

淺析JavaScript中的同名識別碼優先權_javascript技巧

May 16, 2016 pm 05:10 PM
識別符

一,局部變數先使用後聲明,不影響外部同名變數

複製程式碼


程式碼如下:


var x = 1; // --> 外在變數x
function fn(){
    alert(x);  // --> undefined 局部變數x先使用
    var x = 2; // 後宣告且賦值
}
fn(); alert(x); // --> 1


第一點,函數fn內第一句輸出x,x是在第二句才定義的。這在JS中是允許的,這裡的允許是指不會出現語法錯誤程式可以運行。 但在其它語言如C,Java中卻是不允許的。變數必須先宣告後使用,如
複製程式碼


程式碼如下:


public class Test {
    public static void main(String[] args) {
        System.out.println(x); // 先使用
    

Java中編譯器會提示錯誤,程式無法運作。

第二點,函數fn內的局部變數x不會影響到外部的變數x。即fn內alert輸出不是1,而是undefined。
二,形參優先權高於函數名稱

複製程式碼

複製程式碼


程式碼
>

function fn(fn){     alert(fn);

} fn('hello'); // --> "hello"

可以看到函數名稱和形參同名都是fn,輸出的是字串"hello",卻不是函數fn的函數體(fn.toString())。 三,形參優先權高於arguments

複製程式碼


程式碼:

程式碼:

function fn(arguments){     alert(arguments);
}
fn('hello'); // --> "hello"

四,形參優先級高於只聲明卻未賦值的局部變量





複製代碼

程式碼如下:

function fn(a){
    var a;
    alert(a);

五,宣告且賦值的局部變數優先權高於形參





複製程式碼

複製程式碼


程式碼如下:

function fn(a){     var a = 1;     alert(a); } fn('hello'); - -> "1"
函數fn形參為a,函數內第一句僅宣告局部變數a,賦值為1。從輸出結果是"1"而非"hello"可以看出宣告且賦值的局部變數a優先權高於形參a。


六,形參賦值給同名局部變數時


複製程式碼複製程式碼 程式碼如下>function fn(a){     var a = a;     alert(a); } fn('hello'); } fn('hello');
暫不運行,猜測下結果。若依照第五點:宣告且賦值的局部變數優先權高於形參。那麼a將是undefined。但實際上a是"hello",即右a是形參a,左a才是局部變數a。



這裡的兩個a互不干擾,誰也沒覆蓋誰。這與剛剛說的賦值的局部變數優先權高於形參又矛盾了。但引擎這樣做的確是我們想要的,因為並不希望var a = a後a是undefined。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

C++報錯:找不到標識符,怎麼辦? C++報錯:找不到標識符,怎麼辦? Aug 22, 2023 am 10:45 AM

在使用C++程式語言開發程式時,常會遇到「找不到標識符」的報錯。這種報錯資訊通常意味著編譯器無法找到某個變數、函數或類別的定義。這篇文章將解釋這種報錯的原因,以及如何修復這種問題。找不到標識符的原因首先,讓我們來看看為什麼會出現「找不到標識符」的報錯。這種報錯通常有以下幾種原因:1.1變數、函數或類別沒有被定義這是最常見的「找不到識別符」的原因之一。如果一個

c語言合法識別碼的要求是什麼 c語言合法識別碼的要求是什麼 Aug 27, 2020 pm 01:47 PM

c語言合法識別碼的要求是:1.標識符只能由字母(A~Z, a~z)、數字(0~9)和底線(_)組成;2、第一個字元必須是字母或底線,不能是數字;3、標識符中的大小寫字母是有區別的,代表不同意義;4、標識符不能是關鍵字。

理解 Go 標識符:從語法到語義 理解 Go 標識符:從語法到語義 Apr 07, 2024 pm 09:36 PM

在Go語言中,識別碼用於命名實體,語法規則包括以字母或底線開頭,可以包含字母、數字或底線,且不能是保留關鍵字。語意上,常數標識符以大寫字母開頭表示不變值,變數標識符以小寫字母開頭表示可變值,類型標識符以大寫字母開頭表示一組值,函數標識符以小寫字母開頭並通常冠以Func前綴。理解這些規則和語義對於創建清晰、可維護的程式碼至關重要。

javascript中標識符的意思是什麼 javascript中標識符的意思是什麼 Jun 15, 2021 pm 05:41 PM

在javascript中,標識符是指用戶編程時使用的名字,用於給變量、常數、函數、語句塊等命名,以建立起名稱與使用之間的關係;標識符通常由字母和數字以及其它字符構成。合法的識別碼其第一個字元必須是字母、底線或美元符號;且不能與JavaScript關鍵字、保留字重新命名。

在C語言中,什麼是標識符? 在C語言中,什麼是標識符? Sep 02, 2023 pm 10:09 PM

標識符用於程式中的任何變數、函數、資料定義、標籤等。在開始任何語言之前,您至少必須知道如何命名標識符。在C語言中,標識符是字母數字字元的組合,即首先以字母或底線開頭,其餘為字母、任意數字或底線。標識符命名規則標識符命名必須遵循的規則如下-字母字元的大小寫是重要的。例如,對變數使用“TUTORIAL”與對變數使用“tutorial”不同,也與對變數使用“TutoRial”不同。這三個變數都引用不同的變數。對於標識符的長度沒有規定。如果標識符超過31個字符,我們可能會在某些編譯器中遇到問題。對於

c語言標識符有哪些類型 c語言標識符有哪些類型 Nov 28, 2022 pm 07:03 PM

c語言標識符有三類:1、關鍵字,是由C語言規定的具有特定意義的字串,通常也稱為保留字;2、預定義標識符,是系統預先定義的標識符,如函數庫中的函數名、巨集定義和型別別名;3、使用者定義標識符,是使用者依需求自己定義的標識符,一般用來為變數、函數、陣列等命名。使用者標識符如果與關鍵字相同,則編譯時會出錯;如果與預定義標識符相同,編譯時不會出錯,但預定義標識符的原意失去了。

php中標識符允許出現的符號有哪些 php中標識符允許出現的符號有哪些 Sep 18, 2023 pm 02:20 PM

php中標識符允許出現的符號有字母、數字、底線和中文字元。詳細介紹:1、字母和數字,標識符可以由字母和數字組成,它們可以以字母開頭,後面可以跟隨任意數量的字母、數字或下劃線;2、下劃線,標識符可以包含下劃線,但不能以下劃線開頭;3、中文字符,從PHP 7.2版本開始,允許在標識符中使用中文字符,$中文變量、function中文函數()等都是合法的標識符等等。

Go 識別碼使用指南:規約實踐,最佳化程式碼 Go 識別碼使用指南:規約實踐,最佳化程式碼 Apr 07, 2024 pm 01:06 PM

Go標識符命名規則:標識符必須以字母或底線開頭,區分大小寫,避免使用關鍵字。最佳實務包括使用駝峰表示法、避免縮寫、遵循一致性。遵循這些規則可以優化程式碼的可讀性、可維護性和質量,從而提高程式碼庫的可理解性。

See all articles