如何在JavaScript中声明字符串常量
How to declare string constants in JavaScript?
我想在JavaScript中声明字符串常量。
有办法吗?
许多浏览器的实现(和Node)都有常量,用于const
。
const SOME_VALUE = "Your string";
这个const
意味着你不能把它重新赋值给任何其他的值。
查看兼容性说明,看看你的目标浏览器是否被支持。
或者,您也可以修改第一个示例,使用defineProperty()
或它的朋友并使writable
属性为false
。这意味着变量的内容不能像常量一样被修改。
你正在使用JQuery吗?你想在多个javascript文件中使用这些常量吗?接着往下读。(这是我对一个相关JQuery问题的回答)
有一个方便的jQuery方法叫做'getScript'。确保你使用相同的相对路径,如果你从你的html/jsp/etc文件访问文件(即路径不是相对于你放置getScript方法,而是相对于你的域名路径)。例如,对于位于localhost:8080/myDomain: 的应用程序$(document).ready(function() {
$.getScript('/myDomain/myScriptsDir/constants.js');
...
然后,如果你在一个叫做constants.js的文件中有这个:
var jsEnum = { //not really an enum, just an object that serves a similar purpose
FOO : "foofoo",
BAR : "barbar",
}
现在可以用
打印'foofoo'了jsEnum.FOO
JavaScript中没有常量,但是要声明一个文字,你所要做的就是:
var myString = "Hello World";
我不确定你的意思是将它们存储在资源文件中;
当然,当OP提交问题时,这不是一个选项,但是ECMAScript 6现在也允许通过"const"关键字使用常量:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const您可以在这里看到ECMAScript 6的采用
内置对象的标准冻结函数可用于冻结包含常量的对象。
var obj = {
constant_1 : 'value_1'
};
Object.freeze(obj);
obj.constant_1 = 'value_2'; //Silently does nothing
obj.constant_2 = 'value_3'; //Silently does nothing
在严格模式下,在不可变对象上设置值会抛出TypeError。有关详细信息,请参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze
你可以这样做:
(function() {
var localByaka;
Object.defineProperty(window, 'Byaka', {
get: function() {
return localByaka;
},
set: function(val) {
localByaka = window.Byaka || val;
}
});
}());
window.Byaka = "foo"; //set constant
window.Byaka = "bar"; // try resetting it for shits and giggles
window.Byaka; // will allways return foo!
如果你在全局范围内这样做,这将是一个真正的常量,因为你不能覆盖窗口对象。
我创建了一个库来创建javascript中的常量和不可变对象。它仍然是0.2版本,但它做得很好。http://beckafly.github.io/insulatejs
启动ECMAScript 2015(即ES6)时,可以使用const
const constantString = 'Hello';
但是不是所有的浏览器/服务器都支持这个。为了支持这一点,使用像Babel这样的polyfill库。
给这只猫剥皮的方法太多了。您可以在闭包中做到这一点。这段代码将为您提供一种只读的、有名称空间的方式来拥有常量。只需在Public区域声明它们。
//Namespaced Constants
var MyAppName;
//MyAppName Namespace
(function (MyAppName) {
//MyAppName.Constants Namespace
(function (Constants) {
//Private
function createConstant(name, val) {
Object.defineProperty(MyAppName.Constants, name, {
value: val,
writable: false
});
}
//Public
Constants.FOO = createConstant("FOO", 1);
Constants.FOO2 = createConstant("FOO2", 1);
MyAppName.Constants = Constants;
})(MyAppName.Constants || (MyAppName.Constants = {}));
})(MyAppName || (MyAppName = {}));
用法:
console.log(MyAppName.Constants.FOO); //prints 1
MyAppName.Constants.FOO = 2;
console.log(MyAppName.Constants.FOO); //does not change - still prints 1
可以使用Object的freeze方法来创建一个常量。例如:
var configObj ={timeOut :36000};
Object.freeze(configObj);
使用全局命名空间或全局对象,如Constants
var Constants = {};
并使用defineObject写入函数,将所有属性添加到该对象并为其赋值。
function createConstant (prop, value) {
Object.defineProperty(Constants , prop, {
value: value,
writable: false
});
};
在任何js函数的作用域之外声明变量。这些变量将是全局的
- 如何在 javascript 中替换两个声明字符之间的字符串
- 我们可以在 JavaScript/NodeJS 中将键字符串声明为最终变量吗?
- 移动图像 ..JavaScript 将变量声明为字符串
- 监视基元字符串声明
- 每次调用函数时,是否都会重新创建函数中声明的字符串变量
- 如何在函数声明字符串中匹配“obj.foo”
- 为什么Javascript isNaN函数将字符串负十六进制值声明为NaN
- 来自动态数据的JavaScript字符串声明,带有未加引号
- 如何在jquery中将带数学运算的字符串声明为变量
- 什么'It是声明字符串的最佳方式
- 声明一个带有字符串参数的变量
- 声明每个洗牌字符串数组元素
- 在JavaScript中声明字符串时,大撇号是否有效?
- 对峙:ASP.NET mvc声明式、格式字符串式路由和node's命令式路由
- 用作 JavaScript 字符串的 Razor 声明性帮助程序
- 如何将.txt文件声明为字符串?
- 为什么有可能用字符串作为标识符声明属性?做这件事的时候,在引擎盖下面是什么?
- 创建一个字符串(文本),声明变量及其值,以便在Javascript中使用
- 为什么我的字符串声明的位置会影响我的html编码实体是否会正确显示
- 如何在JavaScript中声明字符串常量