可维护性/值准确性的可变参考

时间:2017-05-13 13:11:06

标签: javascript

我正在努力思考基本编程概念的正确术语。

我们将变量/概念称为对变量进行多次引用以轻松维护值或确保值是一致的?

示例

var strAnimal = 'Fox';

console.log('the quick brown' + strAnimal + 'jumps over the lazy dog')
console.log('A man screaming is not a dancing.' + strAnimal + 'Life is not a spectacle.')
console.log('And maybe... you are a little' + strAnimal + 'with no wings, and no feathers')

我一直认为它是一个常量变量,但我不认为这是正确的。

2 个答案:

答案 0 :(得分:1)

  

我一直认为这是一个常数变量

这实际上是矛盾的。 "变量"意味着"不是常数"和"常数"意思是“不变”"。我怀疑你正在考虑不变性

在JavaScript中,var strAnimal = 'Fox';可以这样解释:

  1. 声明名为strAnimal变量
  2. 通过为其分配字符串 初始化
  3. 字符串(与所有原始值一样)在此语言中是不可变的,这意味着您无法改变'Fox'的完整性。

    
    
    var str = 'bar';
    
    str.split(); // ["bar"]
    str.toUpperCase(); // BAR
    str.replace('r', 'z'); // baz
    
    console.log(str); // The original string has not changed...
    
    
    

    相反,对象可变。看看数组会发生什么:

    
    
    var arr = ['foo', 'bar', 'baz'];
    
    arr.pop();
    arr.shift();
    arr.unshift('quux');
    arr.push('corge');
    
    console.log(arr); // The original array has changed...
    
    
    

    不要认为常量不可变的,因为即使在ES6中,常量也不是不可变的。他们只是阻止重新分配。看看这个例子:

    
    
    const obj = {};
    
    obj.foo = 'Foo';
    obj.bar = 'Bar';
    
    console.log(obj); // The original object has changed...
    
    obj = 'Baz'; // TypeError
    
    
    

    要在这种情况下拥有不可变常量,您应该使用Object.freeze()

    
    
    const obj = {};
    
    Object.freeze(obj);
    
    obj.foo = 'Foo';
    obj.bar = 'Bar';
    
    console.log(obj); // The original object has not changed...
    
    
    

答案 1 :(得分:0)

您可以通过直接设置变量值或让函数对其进行操作来更改变量的值。但是你无法改变常数的值。