博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6的let命令实现猜想
阅读量:5089 次
发布时间:2019-06-13

本文共 1477 字,大约阅读时间需要 4 分钟。

今天看了看阮一峰的《ECMAScript 6入门》的let和const命令,看完let之后自己测试了一把,仿佛处在云里雾里之中。代码如下:

"use strict";let o = {};for (let i=0; i<10; i++) {    var j = i;    console.log('for before ... i: ' + j);    o[j] = function(){        i ++;        console.log('func one ... i: ' + i);        var f = function(){            i ++;            console.log('func two ... i: ' + i);        };        f();    };    o[j]();    console.log('for end ... i: ' + i);    console.log();}console.log('------------');for (var key in o) {    var fn = o[key];    console.log('key: ' + key);    fn();    fn();    console.log();}

 运行结果如下:

for before ... i: 0func one ... i: 1func two ... i: 2for end ... i: 2for before ... i: 3func one ... i: 4func two ... i: 5for end ... i: 5for before ... i: 6func one ... i: 7func two ... i: 8for end ... i: 8for before ... i: 9func one ... i: 10func two ... i: 11for end ... i: 11------------key: 0func one ... i: 3func two ... i: 4func one ... i: 5func two ... i: 6key: 3func one ... i: 6func two ... i: 7func one ... i: 8func two ... i: 9key: 6func one ... i: 9func two ... i: 10func one ... i: 11func two ... i: 12key: 9func one ... i: 12func two ... i: 13func one ... i: 14func two ... i: 15

 从结果中我总结出如下规律:

1.let变量会隐式传递到下层函数里面;

2.函数接收到上层传递来let变量后,会开辟一块新的内存,用以保存该变量;

3.函数处理完上层传递来的let变量后,会隐式返回给上层并更新上层的let变量。

那么该如何实现呢?我是这样想的:

1.在每个函数(包括顶层(函数))里面都设置一张let表;

2.在定义函数的时候拷贝一份let表数据,添加到函数的let表里面,并标记来源;

3.当函数执行结束,将let表中从上层传递过来的变量用新值更新回上层的let表中

转载于:https://www.cnblogs.com/alwu007/p/5356291.html

你可能感兴趣的文章
算法导论(第三版)Problems2(归并插入排序、数列逆序计算)
查看>>
d3.js:数据可视化利器之 交互行为:响应DOM事件
查看>>
微信小程序(18)-- 自定义头部导航栏
查看>>
CSS继承—深入剖析
查看>>
IOS开发中的分享到邮件
查看>>
Resharper插件的使用
查看>>
unity中UI的屏幕自适应代码
查看>>
lagou数据爬取
查看>>
井底飞天
查看>>
<a>标签实现锚点跳跃,<a>标签实现href不跳跃另外加事件(ref传参)
查看>>
C# async/await异步操作:异步执行方法封装
查看>>
display:inline、block、inline-block的区别
查看>>
geotrellis使用(二十五)将Geotrellis移植到spark2.0
查看>>
新生代内存中为什么要有两个survivor区
查看>>
Loser’s “Brute-forced Cholesky Factorization for Sparse Matrix on CUDA”
查看>>
c#脚本控制shader
查看>>
SQL返回逗号分隔字符串或者其它符号
查看>>
Unity 游戏对象消失 enable,destroy与active的区别
查看>>
C++之new和malloc差别
查看>>
[LeetCode] Best Time to Buy and Sell Stock
查看>>