发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
javascript中没有块级作用域的概念,有的是函数作用域的概念:变量在声明他们的函数体内部的任何位置(包括这个函数体嵌套的任何函数体内)都是可读取的。
var k = "k"; if(1===1){ var j ="j"; for (var i = 0; i < 3; i++) { console.log(i); } console.log(i);//输出3,表明i不仅仅在循环中有定义,在代码段中也有定义 } console.log(j);//输出j:表明j在不仅仅在代码段内有定义 console.log(i);//输出3:表明i在循环中有定义,在代码段中有定义,另外在整个函数体各处都有定义 console.log(k);//输出k:很明显是在整个函数各处都有定义
简单的说,上面的在不同位置定义的三个变量:i,j,k都是同一个作用域--整个函数体。由于这个原因,这就意味着变量在声明之前甚至已经可用了。这个特性叫做声明提前。
比如下面这个例子,myfield为全局变量,在自定义函数中使用输入的时候,直接输出为此变量的当前值
但是如果在函数中声明了一个同名的局部变量,如果这个局部变量的声明语句在变量使用之后,如下图所示的输出结果可能和自己想象中的不太一样。
出现这个现象的原因是,局部变量在整个函数体中有定义,这个局部变量遮盖了全局变量。局部变量的声明提前了,但是变量的初始化并没有提前,还是在原来的位置。
因此,上面这段代码等价于如下:
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
javascript变量声明 及作用域
javascript变量声明 及作用域javascript变量声明提升(hoisting)javascript中一个名字(name)以四种方式进入作用域(scope),其优先级顺序如下:1、语言内置:所有的作用域中都有 this 和 arguments 关键...
JavaScript中var、let、const的区别 (详解)
var的声明var的变量提升 let.var a = 10function alter(){ var b = 20}alter()console.log(a) // 10console.log(b) // Uncaught ReferenceError: b is not defined/* a是定义在函数外部的,所以是全局...
作用域和闭包
作用域和闭包。因此,在当前作用域中无法找到某个变量时,引擎就会在外层嵌套的作用域中继续查找,直至找到该变量,或抵达最外层的作用域(全局作用域)为止。换句话说,词法作用域是由你在写代码时将...
JavaScript预解析
// 如果变量和函数同名的话,函数优先console.log(a);function a() { console.log(''aaaaa'');}var a = 1;console.log(...
变量提升与函数提升
变量提升与函数提升变量提升。var声明的变量会提升到函数或全局作用域顶部。// 函数作用域中变量提升var b = 5function test() { console.log(b) // undefined var b = 4}// 变量提升之后 var b = 5fun...
深入理解javascript中的立即执行函数(function(){…})()
函数声明、函数表达式、匿名函数。函数声明和函数表达式不同之处在于,一、Javascript引擎在解析javascript代码时会‘函数声明提升''(Function declaration Hoisting)当前执行环境(作用域)...
JavaScript 学习-9.使用let声明变量
JavaScript 学习-9.使用let声明变量前言。在 ES6 之前,JavaScript 使用var声明变量只有两种作用域:全局变量 与 函数内的局部变量。var声明变量使用。为了避免这种问题,所以在新的ES6 中添加了let 关...
JavaScript 中对变量和函数声明的“提前(hoist)”
变量和函数经过“被提前”之后,declaredLater 变量其实就被放在了调用函数的前面,根据 JavaScript 语法的定义,已声明而未被赋值的变量会被自动赋值为 undefined ,所以,第一次打印 declaredLater ...
详解js中let与var声明变量的区别
详解js中let与var声明变量的区别。对于var声明的变量i会受到for循环的影响,受到变量污染,而let声明的变量j不会受到for循环的影响。在函数f4中,无论是用两个let声明同一个变量a,还是一个let声明变量...
微信扫码,在手机上查看选中内容