Фразы, упомянутые в названии этого поста, получают бросок при обсуждении функций языка. Большинство языков один или другой … но не так с JS.
Давайте рассмотрим, что означают эти концепции, а затем видят некоторые фрагменты кода для изучения последствий.
Этот пост предполагает знание const
и Пусть
к объявлять переменные и базовые знания JS Объекты и Отказ
Обозначение.
Я также предположу, что вы понимаете, как журнал
ценности с console.log ()
Отказ
Пройти через ‘copy’
Примитивные типы данных, такие как Строки являются пропущено копией. Это означает, что каждый Переменная использованная литература Это собственная «копия» любой данной Примитивный стоимость.
let myCar = 'Mazda'; /** * Let's get 'you' the 'same' car as me. * Since we are working with PRIMITIVES, * this means that 'your car' will be a separate 'copy' of mine. */ let yourCar = myCar; // 'you' have your own 'Mazda.' // I am replacing my car. myCar = 'Ford' console.log(myCar); // 'Ford' // Your car is the same console.log(yourCar); // 'Mazda'
Так как мы работали с Примитивы Выше, хотя «автомобили» выглядели одинаково, «на некоторое время мы были ссылка 2 разных копии.
Пройти с помощью ‘ссылка’
Очки JS, однако, являются пройти посредством ссылки. Это означает, что они разделяют то же самое «точечное» в памяти, а также Мутации (изменения) будут отражены в обоих Переменные.
const myCar = { make: "Mazda" }; /** * Since we are working with OBJECTS, * this time you are 'sharing' my car - not getting your own 'copy.' * So it's now 'our' car...the same REFERENCE. */ const yourCar = myCar; // I got a new car...so that means you did too - via the same REFERENCE. myCar.make = "Mercedes"; console.log(myCar.make); // "Mercedes" console.log(yourCar.make); // "Mercedes"
Понимание прохождения концепций «Pass» и «Pass by Review» поможет вам понять не просто JS, но многие другие языки программирования. Понимание этого «непоследовательного» поведения в самой js может помочь вам сквош. 🤓.
Оригинал: “https://dev.to/codefinity/pass-by-copy-value-vs-pass-by-reference-8kk”