你不知道的javascript 上卷 读书笔记

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script type="text/javascript">

    {
        let j;
        for(j=0;j<10;j++){
            let i=j;
            console.log(i);
        }
    }

    //一个简单的闭包作用域考察
    function foo() {
        var b=a*2;
        function bar(c) {
            console.log(a,b,c);
        }
        bar(b*3);
    }
    foo(2);// 2 4 12

   //先后顺序并不一定靠谱
    a=2;
    var a;
    console.log(a);

    //闭包的demo
    function foo() {
        var a=2;
        function bar() {
            console.log(a);
        }
        return bar();
    }
    var baz=foo();

    // 循环和闭包
    for(var i=1;i<=5;i++){
        (function () {
            setTimeout(function timer() {
                console.log(i);

            },i*1000)
        })();
    }
    //调整让上面的循环和闭包能正常工作
    for(var i=1;i<=5;i++){
        (function (j) {
            setTimeout(function timer() {
                console.log(j);

            },j*1000)
        })(i);
    }
    //我们换成let来实现一次
    for(let i=1;i<=5;i++){
        setTimeout(function timer() {
            console.log(i);
        },i*1000)
    }

</script>
</html>
时间: 2024-08-01 22:41:57

你不知道的javascript 上卷 读书笔记的相关文章

《你不知道的JavaScript》读书笔记(二)词法作用域

JavaScript 采用的是 词法作用域 的工作模型. 定义 词法化:大部分标准语言编译器的第一个工作阶段叫词法化(单词化),这个过程会对源代码中的字符进行检查,如果是有状态的解析过程,还会赋予单词意义. 词法作用域:定义在 词法阶段 的作用域. 词法作用域由谁决定:由你在写代码时将 变量 和 块作用域 写在哪里来决定.因此大部分情况下,词法分析器处理代码时会保持作用于不变. [例] function foo(a){ var b = a * 2; function bar(c){ consol

《你不知道的JavaScript》读书笔记(一)作用域

名词 引擎:从头到尾负责整个 JavaScript 程序的 编译 及 执行 过程. 编译器:负责 语法分析 及 代码生成. 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限. LHS:赋值操作的左侧(理解为赋值操作的目标是谁,LHS 查询 试图找到变量的容器本身,并对其 赋值 ). RHS:赋值操作的右侧(理解为谁是赋值操作的源头,RHS 查询 就是 查找 某个变量的值). JavaScript 的编译 Java

《编写可维护的javascript》读书笔记(中)——编程实践

上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. 二.编程实践 1.UI松耦合 第一.将css从javascript中抽离(要改变dom样式数据,应该去操作dom的class名而非dom的style属性,后续要修改此样式只需到对应的css文件中修改而不用修改js文件): 第二.将javascript从HTML中抽离,比如下面的写法是不好的 <!-- 不

你不知道的javascript--上卷--读书笔记1

作用域是什么? 答:在<你不知道的javascript>书中提到,作用域就是根据名称查找变量的一套规则.古语有"无规矩不成方圆",但是没有方圆,规矩又给谁用?所以个人理解作用域就是"规矩"+"方圆".作用域是在创建的时候就确定的. 谁有作用域? 答:全局,函数. 为什么要有作用域? 答:前面已经说了,作用域是"规矩"+"方圆".作用域的最大用处就是隔离变量,不同作用域下同名变量不会有冲突.举个例

《编写可维护的javascript》读书笔记(上)

最近在读<编写可维护的javascript>这本书,为了加深记忆,简单做个笔记,同时也让没有读过的同学有一个大概的了解. 一.编程风格 程序是写给人读的,所以一个团队的编程风格要保持一致. 1.缩进:一种是利用制表符缩进,一种是使用空格符缩进,各有利弊,任选一种,保持一致即可.个人比较喜欢制表符缩进. 2.语句结尾需要加上分号,避免没必要的BUG. 3.命名:首先要语义化,使用驼峰式命名法,小驼峰即首字母小写,之后每个单词首字母大写:大驼峰即首字母大写,之后同小驼峰:变量名前缀应该是名词(my

JavaScript设计模式:读书笔记(未完)

该篇随我读书的进度持续更新阅读书目:<JavaScript设计模式> 2016/3/30 2016/3/31 2016/3/30: 模式是一种可复用的解决方案,可用于解决软件设计中遇到的常见问题./将解决问题的方法制作成模板,并且这些模板可应用于多种不同的情况.有效模式的附加要求:适合性,实用性,适用性. 模式的优点: 防止局部问题引起大问题,模式让我们的代码更有组织性 模式通常是通用的解决方式,不管我们开发哪种应用程序,都可以用模式优化我们代码的结构 模式确实可以让我们避免代码复用,使代码更

《高性能 JavaScript》读书笔记(一)

一. 加载和执行——优化JavaScript规则: 1. 将脚本放在底部:2. 减少页面中外链脚本文件的数量: 比如,下载单个100kb的文件将比下载4个25kb的文件更快.这个可以通过离线打包工具或者类似Yahoo!combo handler的实时在线服务来实现:3. HTML4为<script>标签定义了一个扩展属性:defer:  指明本元素所含的脚本不会修改DOM,因此代码能安全的延迟执行,例如: <script type="text/javascript"

《高性能Javascript》读书笔记-2

第二章 数据存取 字面量: 代表自身 不存特定位置   :字符串 数字 bool 对象 array 函数  正则表达 本地变量: var 数组: 存储在js数组对象内部,以数字做索引 对象成员 存储在js对象内部  以字符串做索引 JavaScript中有四种基本的数据存取位置: 直接量,变量,数组元素(以数字作为索引),对象成员(以字符床作为索引) 每一个js函数都表示一个对象, 是fun对象的一个实列 函数每一次执行对应的执行环境都是独一无二的,所以多次调用同一个函数就会导致创建多个执行环境

《高性能Javascript》读书笔记-1

第一章 加载和执行 当浏览器执行JavaScript代码时,不能同时做其他任何事情(单一进程),意味着<script>标签每次出现都霸道地让页面等带脚本的解析和执行(每个文件必须等到前一个文件下载并执行完成才会开始下载),所以头部的JS和CSS用来渲染页面,交互行为(几乎所有)的JS放在<body>底部: 在</body>关闭之前 将所以script标签放到页面底部,能确保脚本执行前页面完成渲染 减少外链脚本数量将会改善性能(合并JS) 任何网站都可以使用一个把制定文件