三. var let const的理解 以及 立即执行函数中的使用 以及 for循环中的例子

一. 立即执行函数

windows中有个name属性,name=‘‘ ‘‘

var

如果我们用var name 去声明,那就会改变windows中name的值(因为我们不是在函数作用域中声明的,所以会覆盖全局的值)

为了避免这种问题,通常我们写一个立即执行函数(可读性不高)

const

同样,如果我们用const去声明,也会改变全局的name属性

我们把const声明写在大括号里面,就不会改变全局的name属性了

二. for循环

常见的for循环,console.log(i) 会输出10,why? 这是因为 i 是通过 var 来声明的,是一个全局变量,每次循环都会重写这个变量 i

通常我们会在for循环中 进行ajax 请求,这边用setTimeout来模拟,1s后执行,会发现打印了10 打印了10次,why? 因为setTimeout执行的时候,for循环已经结束了

为了有效的解决上述问题,我们把var 改成 let ,这样就有效的解决了我们的问题了,因为 let 是块级作用域

要注意的是:不能使用const去声明,因为const是常量

原文地址:https://www.cnblogs.com/wangRong-smile/p/11643424.html

时间: 2024-08-05 10:48:17

三. var let const的理解 以及 立即执行函数中的使用 以及 for循环中的例子的相关文章

深入理解JavaScript的闭包特性 如何给循环中的对象添加事件

初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件.在事件响应函数中(event handler)获取对应的索引.但每次获取的都是最后一次循环的索引.原因是初学者并未理解JavaScript的闭包特性. 有个网友问了个问题,如下的html,为什么点击所有的段落p输出都是5,而不是alert出对应的0,1,2,3,4. <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> &

关于var和ES6中的let,const的理解

var的作用就不多说了,下面说说var的缺点: 1.var可以重复声明 var a = 1; var a = 5; console.log(a); //5 不会报错 在像这些这些严谨的语言来说,一般是不允许重复声明的. 2.无法限制修改 var a = 5; a = 6; console.log(a); //6 不会报错 3.没有块级作用域 if(true){ var a = 5; } console.log(a) // 5 以上几个就是我个人对var的看法 ES6中,多了两个声明let 和 c

javascript精雕细琢(一):var let const function声明的区别

目录 引言 一.var 二.let 三.const 四.function 五.总结 引言 在学习javascript的过程中,变量是无时无刻不在使用的.那么相对应的,变量声明方法也如是.变量是由自己决定,但变量声明方法是早已经定义好的.那么在使用变量之前,了解变量声明方法,就变得尤为重要.在ES6推出之前,最常用的声明变量方法就是var.但是由于var自身的缺陷,ES6推出了let和const替代var.虽然修正了var的缺陷,但不能改变的,是之前已经用var写了多少年的项目,这些项目是无法随着

2-新的变量声明方式(var ,let,const)

以前我们在声明时只有一种方法,就是使用var来进行声明,ES6对声明的进行了扩展,现在可以有三种声明方式了. 字面理解ES6的三种声明方式: var:它是variable的简写,可以理解成变量的意思. let:它在英文中是“让”的意思,也可以理解为一种声明的意思. const:它在英文中也是常量的意思,在ES6也是用来声明常量的,常量你可以简单理解为不变的量 --var声明---- var在ES6里是用来升级全局变量的,我们可以先作一个最简单的实例,用var声明一个变量a,然后用console.

请问微信小程序let和var以及const有什么区别

在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. [JavaScript] 纯文本查看 复制代码 ? 1 2 3 4 5 for(var i=0;i<=1000;i++){ var sum=0; sum+=i; } alert(sum); 声明在for循环内部的sum,跳出for循环一样可以使用,不会报错正常弹出结果 let:声明块级变量,即局部变量. 在上面的例子中,跳出fo

swift学习三:?和!理解

Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化.如果在使用变量之前不进行初始化就会报错: 1 2 3 4 5 var stringValue : String   //error: variable 'stringValue' used before being initialized //let hashValue = stringValue.hashValue //            

es6(var,let,const,set,map,Array.from())

1.变量声明--var,const,let 1.1 var - (全局作用域,局部作用域)会有变量提升 //第一个小例子 <script> var num = 123; function fn(){ console.log(num); // undefined var num = 46; console.log(num) // 46 } fn() </script> //为什么第一个输出值会是undefined,而不是123呢?因为这里存在着变量名的提升,其实上述语句相当于: &l

var、const、let 的区别

定义变量的三种方式 var.const.let 都可以用来定义变量,但三者之间存在区别. var var 声明变量的时候无需初始化. var 声明的变量可在后面进行修改. var 声明的全局变量可以被函数修改. <!DOCTYPE html> <html> <head> <title></title> </head> <body> <script type="text/javascript">

var/let/const区别何在??

原文地址:http://www.cnblogs.com/liuhe688/p/5845561.html let和const有很多相似之处,先说一说let吧. 1. let添加了块级作用域 我们知道,JavaScript是没有块级作用域的,如果在块内使用var声明一个变量,它在代码块外面仍旧是可见的: if (true) { var foo = 3; } console.log(foo); // 3 for (var i = 0; i < 9; i++) { var j = i; } consol