堆栈内存和作用域问题

堆栈内存和作用域问题

堆内存:存放引用类型值

栈内存:存放基本类型值和执行代码的环境

// 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 中国大陆许可协议进行许可。

posted @   伏月廿柒  阅读(29)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起