堆栈内存和作用域问题
堆栈内存和作用域问题
堆内存:存放引用类型值
栈内存:存放基本类型值和执行代码的环境
// example 1
let a = {}, b = '0', c = 0;
// 在以undefined、null、Number、String、Symbol、Boolean等基本类型做下标或者键时
// 只是在引用时都转换为字符串,存储扔以基本类型存储
a[b] = '瑞克';
a[c] = '莫蒂'; // 对象内属性名不能重复,数字属性名 == 字符串属性名
console.log(a[b]); // 莫蒂
// example 2
let a = {}, b = Symbol('1'), c = Symbol('1'); // Symbol 创建唯一值
// console.log(Symbol('1') === Symbol('1')); // fasle
a[b] = '瑞克';
a[c] = '莫蒂';
console.log(a[b]); // 瑞克
// example 3
let a = {}, b = {n: '1'}, c = {m: '2'};
// 在以对象作为键时,都会转换成字符串存储,所有对象转换成字符串(Object.toString)都是 "[object Object]"
a[b] = '瑞克';
a[c] = '莫蒂';
console.log(a[b]); // 培训
var test = (function (i) {
return function () {
alert(i *= 2); // alert弹出的值都是字符串
}
})(2);
test(5);
// 运行结果:弹出 "4"
var a = 0, b = 0;
function A(a) {
A = function (b) {
alert(a + b++);
}
alert(a++);
}
A(1);
A(2);
本文作者:伏月廿柒
本文链接:https://www.cnblogs.com/by0627/p/16064679.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步