2010-11-13 42 views
26

如果是這樣,這種聲明的語法是什麼?全局常量是否可以在JavaScript中聲明?

+0

如果全球您指的是可以改變的網域的網頁,那麼你需要的東西后,被稱爲是餅乾變.. – crodjer 2010-11-13 20:34:31

+0

@Dcrodger:不,功能之間公正的全球。此外,這是一個常數,而不是一個變量 - 因此,cookie會過度殺傷。 – Giffyguy 2010-11-13 20:35:54

+0

參見:http://stackoverflow.com/questions/130396/are-there-constants-in-javascript – Ken 2010-11-13 21:19:42

回答

23

JavaScript並沒有真正有一個命名常量的概念,或對象的不變屬性。 (請注意,我不是在談論這裏ES5)

您可以在全球範圍內用一個簡單的var聲明中聲明全局變量,就像在外面通過一個網頁包含的腳本的任何函數:

<script> 
    var EXACTLY_ONE = 1; 

然後你的代碼當然可以使用這個常量,但它並不是真正的「常量」,因爲值可以被改變(屬性被更新,換句話說)。

+4

更新 - 在ES6和諧最現代的瀏覽器和標準提供const關鍵字:https://developer.mozilla.org/EN-US /文檔/網絡/的JavaScript /參考/語句/常量 – netpoetica 2013-09-26 02:48:00

+0

務必閱讀文檔!常量被限制範圍,所以這樣的:如果'(DEBUG){const的HOST = 「的locahost」;}其他{常量HOST = 「coolhost」;}'不會暴露'HOST'全局。 – 2017-05-18 10:10:15

10

一切是全球性的,除非與var關鍵字聲明。

沒有常量要麼。您可以簡單地聲明它們而不使用var關鍵字。

如果你想確保全球範圍內,你可以把它扔進了window對象:

window.GLOBAL_CONSTANT = "value"; 

您可以從任何範圍內做到這一點。然後可以在函數或閉包中聲明常量,但我不會建議這樣做。

22

爲「尖尖」這麼仔細注意到,ECMAScript中有沒有這樣的功能。然而,JavaScript does

const a = 7; 
document.writeln("a is " + a + "."); 

當然,如果你正在寫的代碼放在網頁上的Web瀏覽器上運行,這可能幫不了你了。 :-)

+4

爲什麼地球上這是低調?這是真的,如果你只在Mozilla專用環境中工作,那麼這些信息並不是很有名並且很有用。從我+1。 – 2010-11-14 00:34:28

+5

@Tim,被人不知道...,+1的ECMAScript和JavaScript(TM)之間的差異也從我... BTW有一點要記住下投票,就是TC39委員會有批准了一套[對實現者的建議](http://j.mp/agMtti),其中包括對非標準聲明(對const code)的嚴格模式代碼的限制。火狐4在目前沒有關於在嚴格的模式不規範聲明的限制,但WebKit的JavaScriptCore的有他們-really好事IMO-,你不能用'const'或有''裏面Blocks' FunctionDeclarations' ...只是要記住.. – CMS 2010-11-14 02:40:12

+0

@CMS:有趣的是,我沒有看到這一點。謝謝。 – 2010-11-14 11:29:23

3

如果你想確保值不能改變使用功能。

因此,而不是:

var Const_X=12 

使用:

function Const_X() { 
return 12; 
} 
+0

舊的答案,但我很確定你可以重寫函數。 – Midnightas 2016-08-25 14:08:27

2

如果你只關心支持新的瀏覽器(或正在使用transpiler如通天支持舊的瀏覽器),你可以做以下內容:

  1. 創建的設置。JS跟你想要的任何常量文件並將其導出:
export const FRUIT = "kiwi"; 
export const VEGETABLE = "carrot"; 
  • 在要使用它們,那麼你可以將它們導入如下文件:
  • import * as Settings from './settings.js' 
    
  • 的N到使用常量做這樣的事情:
  • console.log("The unchangeable fruit is " + Settings.FRUIT); 
    

    這是一個比試圖執行一個全局常量,尤其是當你要使用多個JavaScript文件,更清潔的方法。常量