Я не слишком глубоко в JavaScript. Поэтому сделали это:React: Почему необходимо иметь неизменяемые реквизиты, если значения передаются как по значению в любом случае?
var demo = 'test';
var obj = {
x: 'abc'
}
function foo(str) {
str += '_123';
return str;
}
var ret = foo(demo);
var retObj = foo(obj.x);
console.log('Result: %s', ret); // => 'test_123'
console.log('Used parameter: %s', demo); // 'test'
console.log('Result: %s', retObj); // 'abc_123'
// The value of the property is still unchanged. So
// it has been passed in as by value. As as copy.
console.log('Used parameter: %s', obj.x); // 'abc'
Передаю строку функции. Один раз в качестве примитивной переменной и в следующий раз как свойство объекта.
После этого исходные данные не изменяются. => Внешняя система не изменяется.
Теперь я задаюсь:
Почему они имеют эту неизменность особенность в Реагировать?
Я имею в виду: говорят, что функция должна что-то делать и обеспечивать результат. Но не менять систему в целом.
Но если данные передаются как по значению в любом случае? Зачем делать такую большую вещь из непреложности?
Если вы передали фактический объект функции, функция могла бы мутировать этот объект (включая изменение или удаление существующих свойств и добавление новых). – nnnnnn
Не все передается по значению. – naomik