[译]助力年后跳槽涨薪,深入理解 JavaScript 内存模型
source link: https://juejin.im/post/5e398ddaf265da57455b310d
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本文翻译自:JavaScript’s Memory Model感谢原作者创作了这么好的文章
作为开发者,我们每天都在声明变量,初始化变量,并在以后分配新值。
// declare some variables and initialize them
var a = 5let b = 'xy'
const c = true// assign new values
a = 6
b = b + 'z'
c = false // TypeError: Assignment to constant variable复制代码
- JS 原始数据类型的变量声明和赋值
- JavaScript 的内存模型:调用堆栈和堆
- JS 引用数据类型的变量声明和赋值
Let 和 const
JS原始数据类型的变量声明和赋值
myNumber
的变量,并将其初始化为 23 。let myNumber = 23复制代码
- 为变量创建一个唯一标识符(“myNumber”)。
- 在内存中分配一个地址(将在运行时分配)。
- 在分配的地址中存储一个值(23)。
myNumber
等于 保存值 23 的内存地址。这是要理解的关键区别。let newVar = myNumber复制代码
myNumber
在程序上讲等于“0012CCGWH80”
,因此 newVar
也等于“0012CCGWH80”
,这是保存值 23 的内存地址。最终,这等同于说:“ newVar现在等于23”myNumber
等于内存地址 “0012CCGWH80”
,因此将其分配给 newVar
会将“0012CCGWH80”
分配给 newVar
。myNumber = myNumber + 1复制代码
“myNumber”
的值肯定为24。但是newVar指向相同的内存地址时,其值也会为24吗?let myString = 'abc'myString = myString + 'd'复制代码
JavaScript的内存模型:调用堆栈和堆
JS引用数据类型的变量声明和赋值
let myArray = []复制代码
- 为变量创建一个唯一标识符(“ myArray”)。
- 在内存中分配一个地址(将在运行时分配)。
- 存储在堆上分配的内存地址的值(将在运行时分配)。
- 堆上的内存地址存储分配的值(空数组[])。
从这里,我们可以调用 push
、
pop
或做任何我们想做的事情。myArray.push("first")myArray.push("second")myArray.push("third")myArray.push("fourth")myArray.pop()复制代码
let vs. const
let sum = 0
sum = 1 + 2 + 3 + 4 + 5
let numbers = []
numbers.push(1)
numbers.push(2)
numbers.push(3)
numbers.push(4)
numbers.push(5)
复制代码
let
const
const importantID = 489importantID = 100 // TypeError: Assignment to constant variable复制代码
const myArray = []复制代码
myArray.push(1)
myArray.push(2)
myArray.push(3)
myArray.push(4)
myArray.push(5)复制代码
myArray = 3复制代码
myArray = ['a']复制代码
['a']
是一个新的非原始数组,因此将在调用堆栈上分配一个新的内存地址,并存储堆上一个内存地址的值,存储在堆内存地址上的值将为['一种']。const myObj = {}
myObj['newKey'] ='someValue'//这不会引发错误复制代码
为什么这对我们有用
太过自由带来 bug。
- 用 const 声明的变量必须在声明时进行初始化,这迫使编码人员经常在范围方面考虑周全。这最终导致更好的内存管理和性能。
- 别人通过您的代码就像和你交流一样,哪些变量是不可变的,哪些变量可以重新分配。
const 或 Let
Recommend
-
95
程序员 - @privil - 公司突然一股离职潮,让我有点慌,可能还是要准备下,万一有个啥问题,我也要投简历了,大家觉得四月后半段怎么样,会不会太晚了
-
18
程序员 - @PhpBestRubbish - 由于我在疫区,2 月和 3 月都在家办公,上周才开始上班的,年前谈好了涨薪 2000,2 月和 3 月工资只涨了 500,总监谈,说今年行情不好,大家都没有涨到年前谈好的,现在行情真的这么差吗?
-
5
不用跳槽轻松涨薪的技巧分享给你...
-
1
对于大部分年轻人而言,找工作就像找对象,对比尝试后才能遇到最合适的那一个,所以,跳槽也成了当代年轻人的职场必修课。 大部分职场人都认为:比起被动等待工资普调、和遥遥无期的职级晋升,主动「跳一跳」,更能提升自己的「钞能力」。 但实际上却...
-
7
年后求职涨薪秘诀!热门3D软件Blender系统课程来了! 收藏 8小时前 推荐:
-
7
我是安娜,一名UI转岗的B端产品经理,刚刚从《90天B端产品经理实战班》毕业,就马不停蹄从零售SaaS转行拿到了涨薪30%的新offer。 如果你也想入行B端/跳槽涨薪,我的故事或许能给你一些启示。 01 拒绝“随波逐流” 我转岗做了B端产品
-
6
我是安娜,一名UI转岗的B端产品经理,刚刚从《90天B端产品经理实战班》毕业,就马不停蹄从零售SaaS转行拿到了涨薪30%的新offer。 如果你也想入行B端/跳槽涨薪,我的故事或许能给你一些启示。 01 拒绝“随波逐流” 我转岗做了B端产品...
-
5
跳槽涨薪梦碎,年轻人等待“金三银四” Tech星球 2023-02-28 0 评论...
-
4
大家好,我叫方方,是起点课堂《90天B端产品实战班》26期的学员。经过3个月的学习积累,现在成功进入人工智能这个热门赛道,并实现转行加薪。也让我的职业发展有了一个顺利的过渡。 如果你也正迷茫于自己的职业发展,希望...
-
7
35岁跳槽字节涨薪大于50%,爆料求职经历
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK