我遇到的情况无法真正解释这是怎么回事。
我为演示制作了plunker。
代码:
angular.module('test', []).controller('TestController', function($scope) {
/*
DEFAULT CONST VARIABLE
*/
const _DEFAULT = {
items: [],
name: 'Test',
selected: null
};
/*
TEST_CASE SCOPE VARIABLE
*/
$scope.test_case = _DEFAULT;
console.log('ON INIT DEFAULT: ', _DEFAULT);
/*
FUNCTION
*/
$scope.clicked = () => {
// SET TEST_CASE.SELECTED = 1
$scope.test_case.selected = 1;
// SHOW UPDATED TEST_CASE AND _DEFAULT VARIABLE
console.log($scope.test_case, _DEFAULT);
};
});
点击按钮(check demo)后,我们仅在$scope.test_case
更改数据,因此如何 const变量_DEFAULT
可能与{具有相同的数据} {1}}从未触及或更改$scope.test_case
时?
那应该是不可能的,还是我错过了什么?
答案 0 :(得分:1)
这是设计:
const声明创建对值的只读引用。它并不意味着它拥有的值是不可变的,只是不能重新赋值变量标识符。例如,在内容是对象的情况下,这意味着可以改变对象的内容(例如其参数)。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const
此上下文中的const
关键字将阻止变量_DEFAULT
被赋予新值,但不会阻止该变量的值发生变化。