JavaScript中變數宣告有var和沒var的區別範例介紹_javascript技巧
本文來論述JavaScript中變數宣告有var和沒var的區別,關於Js中的變數宣告的作用域是以函數為單位,所以我們常常見到避免全域變數污染的方法是
(function(){ // ... })();
在函數內部,有var和沒var宣告的變數是不一樣的。有var聲明的是局部變量,沒var的,聲明的全域變量,所以可以藉此向外暴露介面東東。
在全域作用域內宣告變數時,有var 和沒var看起來都一樣,我們知道,聲明的全域變量,就是window的屬性,究竟是否一樣,我們透過ECMAScrpit5提供的屬性的特性查詢方法,來發現之間的區別。
var fff = 2; window.ffa = 3; ffb = 4; this.ffc = 4; var ffftx = Object.getOwnPropertyDescriptor(window, 'fff'); //configurable:false,enumerable:true,value:2,writable:true var ffatx = Object.getOwnPropertyDescriptor(window, 'ffa'); //configurable:true,enumerable:true,value:2,writable:true var ffbtx = Object.getOwnPropertyDescriptor(window, 'ffb'); //configurable:true,enumerable:true,value:2,writable:true var ffctx = Object.getOwnPropertyDescriptor(window, 'ffc'); //configurable:true,enumerable:true,value:2,writable:true
透過上面,發現,原來還是有差別的,我們再用delete刪除屬性來驗證下,配置性為false的屬性無法刪除。也就是透過變數var宣告全域物件的屬性無法刪除,我們也會發現和函數宣告所建立的全域物件屬性也無法刪除。
delete fff; // 无法删除 delete ffa; // 可删除 delete ffb; // 可删除 delete ffc; // 可删除
結論就是,加上var 和沒加 var的宣告全域變數是有區別的。
使用var語句重複聲明語句是合法且無害的。如果重複聲明且帶有賦值,那麼就和一般的賦值語句沒差別。如果嘗試讀取沒有聲明過的變量,Js會報錯。
JavaScript的函數作用域內,宣告的變數或內部函數,在函數體內都是可見的。意味著,函數在定義之前可能已經可用。函數定義有兩種方式,一種是函數定義表達式,一種是函數宣告語句。
// 函数定义表达式 var fns = function (){ // ... }; // 函数声明语句 function fns(){ // ... }
函數宣告語句「被提前」到外部腳本或外部函數作用域的頂部,所以以這種方式宣告的函數,可以被再它定義之前出現的程式碼所呼叫。而函數定義表達式中,變數的宣告被提前了,但是給變數的賦值是不會提前的,所以,以表達式定義的函數在函數定義之前無法呼叫。
(function() { testa(); // 打印出testa testb(); // 报错:提示undefined is not a function console.log(testc); //undefined,如果移到上面就可以了 function testa() { console.log("testa"); } var testb = function() { console.log("tesb"); } var testc = "testc"; })();
當然,我們宣告變數和函數,必須遵守基本的規範,變數和函數宣告要提前。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

解決C++程式碼中出現的「error:useofundeclaredidentifier'variable'」問題在使用C++進行程式設計時,我們常常會遇到各種各樣的錯誤。其中一個常見的錯誤是「error:useofundeclaredidentifier'variable'」。這個錯誤通常意味著我們在程式碼中使用了一個未宣告的變數。這篇文章將詳

這篇文章為大家帶來了關於JavaScript的相關知識,其中主要為大家介紹了var、let以及const的區別有哪些,還有ECMAScript 和JavaScript的關係介紹,有興趣的朋友一起來看一下吧,希望對大家有幫助。

音訊輸出和輸入需要特定的驅動程式和服務才能在Windows11上按預期工作。這些有時最終會在後台遇到錯誤,從而導致音訊問題,如無音訊輸出、缺少音訊設備、音訊失真等。如何修復在Windows11上沒有回應的音訊服務我們建議您從下面提到的修復開始,並逐步完成列表,直到您設法解決您的問題。由於Windows11上的多種原因,音訊服務可能無法回應。此清單將幫助您驗證和修復阻止音訊服務在Windows11上回應的大多數問題。請按照以下相關部分幫助您完成流程。方法一:重啟音訊服務您可能會遇

PHP中var關鍵字的作用和範例在PHP中,var關鍵字用來聲明一個變數。在先前的PHP版本中,使用var關鍵字是宣告成員變數的慣用方式,現在不再建議使用。然而,在某些情況下,var關鍵字依然會被使用。 var關鍵字主要用於宣告一個局部變量,並且會自動將該變數標記為局部作用域。這意味著該變數僅在當前的程式碼區塊中可見,並且不能在其他函數或程式碼區塊中存取。使用var

PHP是一種非常流行的網頁開發語言,它允許開發人員在伺服器端創建動態Web應用程式。在PHP中,變數是一種基本的資料結構,用於儲存值和資料。本文將介紹如何在PHP中使用變數。變數的基本語法在PHP中宣告變數的語法非常簡單。變數名以美元符號($)開頭,後面跟著變數名。變數名稱可以是字母、數字或底線的組合,但必須以字母或底線開頭。例如,下面的程式碼聲明了一個名

錯誤的原因這個錯誤訊息表明,在python程式碼中,使用了一個物件(由self變數表示),但是該物件沒有一個名為k的屬性。這可能是由於該物件沒有定義這個屬性,或者是在程式碼中類型錯誤導致該物件不是預期的類型。如何解決要解決這個錯誤,可能需要進行以下操作之一或多個:檢查程式碼中的錯誤,確保self變數引用的物件具有名為k的屬性。檢查程式碼中的型別錯誤,確保self變數所引用的物件是預期的型別。如果是缺少屬性的話,需要在類別裡定義這個屬性使用tryexcept來取得這個錯誤如果確定了k是類別裡沒有定義的屬性,請確

llet、var、const分別代表區塊作用域變數、函數作用域變數和常數。詳細介紹:1、let,用於聲明一個塊作用域的變量,使用let聲明的變量不能在它被聲明之前被訪問,這就是所謂的暫時性死區;2、var,用來聲明變量的關鍵字,宣告的變數是函數作用域或全域作用域的,不受區塊級作用域的限制;3、const,用來宣告一個常數,一旦被賦值就不能再重新賦值的變量,值在宣告後不能被修改等。

如何解決golang報錯:undeclaredname'x'(cannotrefertounexportedname),解決步驟在使用Golang進行開發過程中,我們經常會遇到各種各樣的報錯資訊。其中一個常見的錯誤是"undeclaredname'x'(cannotrefertounexportedname)"指的是變
