Gif*_*guy 38 javascript variables constants global-variables
如果是这样,这种声明的语法是什么?
Ken*_*Ken 28
由于"尖尖"如此仔细地注意到,ECMAscript没有这样的功能.但是,JavaScript确实:
const a = 7;
document.writeln("a is " + a + ".");
Run Code Online (Sandbox Code Playgroud)
当然,如果您正在编写代码以便在Web上运行Web浏览器,那么这可能对您没有多大帮助.:-)
Poi*_*nty 27
Javascript实际上没有命名常量的概念,也没有对象的不可变属性.(请注意,我不是在谈论ES5.)
您可以var
在全局范围内使用简单声明声明全局变量,例如网页包含的脚本中的任何函数外部:
<script>
var EXACTLY_ONE = 1;
Run Code Online (Sandbox Code Playgroud)
那么你的代码当然可以使用那个常量,虽然它不是真正的"常量",因为值可以改变(换句话说,属性更新).
Jos*_*h K 13
除非使用var
关键字声明,否则一切都是全局的.
也没有常数.你可以简单地声明它们没有var
关键字.
如果要确保全局范围,可以将其放入window
对象:
window.GLOBAL_CONSTANT = "value";
Run Code Online (Sandbox Code Playgroud)
您可以在任何范围内执行此操作.然后可以在函数或闭包内声明常量,但我不建议这样做.
koj*_*ow7 10
如果您只关心支持较新的浏览器(或使用 Babel 等转译器来支持较旧的浏览器),您可以执行以下操作:
Run Code Online (Sandbox Code Playgroud)export const FRUIT = "kiwi"; export const VEGETABLE = "carrot";
Run Code Online (Sandbox Code Playgroud)import * as Settings from './settings.js'
Run Code Online (Sandbox Code Playgroud)console.log("The unchangeable fruit is " + Settings.FRUIT);
与尝试实现全局常量相比,这是一种更简洁的方法,尤其是当您有多个要在其中使用常量的 JavaScript 文件时。
你可以用getter和setter这样做:
Object.defineProperty(window, 'TAU', {
get: function(){return Math.PI*2;}
});
Run Code Online (Sandbox Code Playgroud)
如果您想要一般功能来执行此操作:
function define(name, value){
Object.defineProperty(window, name, {
get: function(){return value;},
set: function(){throw(name+' is a constant and cannot be redeclared.');},
});
}
// Example use
define('TAU', Math.PI*2);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38375 次 |
最近记录: |