执行顺序问题

请问console.log输出的值是多少

输出的肯定是1

假如这里有一行未知的代码 会打印出几?

如果这段未知的代码是a=2。那么其实console输出的就是2

只关心代码,没有关心代码执行的顺序,这就是这条面试题最大的陷阱。
最终输出的是

语法问题

i虽然是写在for循环里面,但是它依然是往外跑的

i等于5的时候要执行i++然后进入不到循环里面了。所以当等于6的时候循环内就不成立, 就执行最下面的console的输出


如果这行代码是用户点击的时候去执行的话。那么这行代码就是 最终的6.


按钮点击多次 输出的结果都是6

http://js.jirengu.com/?html,output


光标上面那行代码的最后,一回车,就生成了如下的代码

当点击导航3的时候输出的值是几???


执行代码。页面默认加载完成,i就已经是6了

怎么让点击导航1就打印出1 点击导航2就打印出2呢????

打印出来一直是6,是因为我们的只有一个i

用变量j来接受变量i

打印出来了5,

为什么是5呢。i虽然一直++一直加到了6,但是j并没有一直++。所以i到6 就不会进入循环了。 j的值一直最高就是5了。
因为j这个傻逼变量会提升。j会提升到这里。

始终用同一个j去接收同一个i,也就是这个事件里面只有一个i和j
默认输出i和j的值

let

用let,这个j就不会跑到外面去了。

let的作用域只有选中的一块区域

循环点击输出的结果

如果不用let,就要搞出一个新的作用域

新的作用域一般是用立即执行函数。这个j的函数就是在这个函数里面。不会出去的

现在的这个j就是每个循环一个j

这就是js程序员在es6的语法之前是多么的痛苦。

也可以这么写,意思是j就是第一个参数

如果把i用let来修饰


i的作用域就在选中的这块代码。所以花括号内是访问不到i的

for循环的语法做了一个魔法,每次进入循环的时候。在循环内创建一个i,这个i等于外面的i的值。

我们把外面的i改成下划线的i,这样好区分

这一行代码是js自动加的 我们看不见。

一共7个i,圆括号内一个i贯穿了循环的始终

以及每次循环,都会产生的块作用域的i,0到5 所以里面是6个i,加上最外面的i 就是7个i

结束

ES6深入浅出-1 新版变量声明:let 和 const-3.视频 相关面试题的更多相关文章

  1. ES6深入浅出-1 新版变量声明:let 和 const-2.视频 let和const

    以前的var方式声明不好用 a=1回声明一个全局变量, 输出了1 说明a=1确实声明了一个全局变量. 但是你把放在其他的地方,就不是声明全局变量了. 如果外面有个全局变量a 那么函数里面就是给a赋值 ...

  2. ES6深入浅出-1 新版变量声明:let 和 const-1.视频 概述

    es7语法比较少,只占了一点点 ES 6 新特性一览:https://frankfang.github.io/es-6-tutorials/ 我用了两个月的时间才理解 let   https://zh ...

  3. es6 快速入门 系列 —— 变量声明:let和const

    其他章节请看: es6 快速入门 系列 变量声明:let和const 试图解决的问题 经典的 var 声明让人迷惑 function demo1(v){ if(v){ var color='red' ...

  4. 石川es6课程---3、变量let和常量const

    石川es6课程---3.变量let和常量const 一.总结 一句话总结: let非常好用,尤其是let的块级作用域可以解决之前要(function(){})()立刻执行函数做的块级作用域 1.js中 ...

  5. ES6学习笔记之变量声明let,const

    最近用淘宝的weex做了个项目,最近稍微闲下来了.正好很久没有接触RN了,所以趁这个机会系统的学习一下ES6的相关知识. 孔子说:没有对比就没有伤害.所以我们要拿ES6和ES5好好对比的学习.这样才能 ...

  6. ES6 (一)变量声明方法 & 解构赋值

    就是最新的JavaScript 原来的是var,要求不严格,不能限制修改,函数级 es6要求严格 1.防止重复声明 let      变量=var const 常量 2.控制修改 const常量不能修 ...

  7. ES6深入浅出-5 新版对象-2.属性修饰符

    对象语法增强 已经有了个对象的新增语法 还需要一个api来做呢?. 因为有的时候,你需要在旧的对象上添加get.set. 读的时候就走get 写的时候就走set 假设很早之前在项目里写了一个old对象 ...

  8. ES6深入浅出-5 新版对象-1.如何创建对象

    对象属性的加强: 可以通过new Object(), Object.create()方法,或者使用字面量标记(初始化标记)初始化对象. 一个对象初始化器,由花括号/大括号 ({}) 包含的一个由零个或 ...

  9. ES6深入浅出-2 新版函数:箭头函数 2 视频-1.视频 箭头函数

    ES3里面的写法 匿名函数是用不了的 还是需要给他赋值 选中的这一部分叫做匿名函数 等于号叫做赋值 let xxx叫做声明 所以说这个地方是三个语法,首先声明一个匿名函数,然后声明一个xxx变量,最后 ...

随机推荐

  1. Deep Module(深模块)

    Deep Module(深模块) 目录 1,模块化设计 2,接口里有什么 3,抽象 4,深模块 5,浅模块 6,Classitis 7,例子 8,结论 正文 类是不是越小越好?最近在读John Ous ...

  2. Maven创建本地仓库

    1:创建仓库目录 在D盘Program Files目录下创建repository目录 2:修改settings.xml ​ ​ D:\ProgramFiles\repository  是我们创建的本地 ...

  3. 请求类型 GET 和 POST 的区别

    一.GET 一个简单的 GET 请求: xmlhttp.open("GET","demo_get.asp",true); xmlhttp.send(); 在上面 ...

  4. Linux添加shell(.sh)脚本并添加定时任务

    一.添加sheel脚本 1.首先创建一个执行程序:vim a.sh 2.编辑: #!/bin/bash  python3  python.py >> test2.log 2>& ...

  5. 安装Genymotion模拟器(第三方)

    优势: 启动速度更快 注册账户,下载可用的系统镜像,就可以使用.     官方网站: https://www.genymotion.com/account/login/ 选择的版本是带VirtualB ...

  6. h5触摸事件-判断上下滑动

    // 判断上下滑动 var startX = 0, startY = 0; function touchStart(evt){ try{ var touch = evt.touches[0], //获 ...

  7. jquery限定文字超出用省略号

    都知道用css3可以做到一行超出显示省略号,但多行的用css3很麻烦还要考虑兼容,今天用jquery判断字数来限制出现省略号 $(".ftlt_lt_wzne").each(fun ...

  8. luogu 3380

    树状数组套权值线段树 #include <iostream> #include <cstdio> #include <algorithm> #include < ...

  9. linux系列(十四):head命令

    1.命令格式: head [参数] [文件] 2.命令功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行. 3.命令参数: -q 隐藏文件名 -v 显示文件名 ...

  10. python循环导入的问题

    1.问题 循环导入,代码如下: from c import c def b(): print('b') b.py from b import b def a(): # from b import b ...