美文网首页
24.for循环的let和var

24.for循环的let和var

作者: Sune小叶子 | 来源:发表于2018-05-11 13:35 被阅读0次

es6新增let命令用来声明变量,但是与var的区别是let声明的变量只在let所在的代码块里面有效[图片上传失败...(image-ecfc47-1526016908749)]
我一直很好奇的是在for循环里面使用let和var的那种神奇差别到底是怎么产生的,尤其是每次面试题里面出现这个,然后我只能回答的知其然而不知其所以然的时候,如鲠在喉,难过,好了今天看见一篇帖子嗯瞬间就明白了

  • js是弱类型语言,我们可以看见变量 i 的类型会根据赋值的不同而改变
var i = 0;
(function () {
    console.log(typeof i);  
    i = 'zb';
    console.log(typeof i);  
    
}());
console.log(i + '$$$')
// number  --> 第一次在全局定义为number型
// string     --> 重新赋值以后变为string类型
// zb$$$
  • 但是如果是for循环呢,你会发现会有所不同
console.log(i + '****');   
console.log(typeof i);

for (var i = 0; i < 3; i++) {
    
    console.log(typeof i);

    var i = 'qbc';
    console.log(typeof i);  

    console.log(i);    
}

console.log(typeof i);
console.log(i);
console.log(i + '$$$');  
// undefined****
// undefined  --> 初次未定义
// number     --> for循环定义为number型
// string        --> for循环内部修改为string型
// qbc
// number    -->但是为什么在外面还是被定义为number型,这真的是一个神奇的存在@2
// NaN
// NaN$$$
undefined
  • @2 网上有一种说法就是for循环设置循环变量的那个作用域是父作用域,而循环体内部是一个单独的子作用域.

相关文章

  • 24.for循环的let和var

    es6新增let命令用来声明变量,但是与var的区别是let声明的变量只在let所在的代码块里面有效[图片上传失败...

  • ES6 let var const解析

    let 和 var,const let声明的变量只在let所在的代码块有效 for循环中,var声明的是全局的,l...

  • ES6 学习笔记

    let 和 const 循环语句中,每次循环都会创建一个新的代码块作用域 var a = [];for (let ...

  • 数组越界问题

    等价于 要想让a6输出的结果为6,将for循环的var改成let即可,修改代码如下: 关于var 和 let 区别...

  • let声明变量

    1.let命令 1.1块级作用域: 和var类似但是只在let声明变量的代码块内有效。例如for循环,每次循环都是...

  • 2019-06-12 For循环原理

    For循环原理 我们知道for循环中如果用var定义和用let定义是产生不同的结果的,原因是var是全局定义,le...

  • 第一章 let和conset命令

    let 1.let声明类似于var,但是let只在所在的代码块中有效,可以很好的用在for循环中代替var,记住只...

  • Swift基础语法

    let 和 var let 标识常量var 表示变量 swift :自动推导,var/let的类型是由“=” ...

  • [转载] for循环中let和var区别

    首先看一段代码: 区别: var是全局作用域,有变量提升的作用,所以在for中定义一个变量,全局可以使用,循环中的...

  • let、const、var

    let和var let声明的变量只在它所在的代码块有效。 for循环就非常适合试用let,只在本轮适用,所以每一次...

网友评论

      本文标题:24.for循环的let和var

      本文链接:https://www.haomeiwen.com/subject/sxtfdftx.html