提升hoisting
提升hoisting
##变量提升 一个变量只属于一个作用域, 通过var声明的变量会发生变量提升。
function(){foo = 1;var foo;console.log(foo); // output:1
}
复制代码
注意只有变量声明被提升了,赋值语句没有。
function(){foo = 1;var foo = 2;
}
等价于
function(){var foo;foo = 1;foo = 2;
}
下例中因为有变量提升所以foo不是gobal。
function(){console.log(foo);foo = 1;console.log(foo);var foo = 2;console.log(foo);
}// output: undefined 1 2
复制代码
另一个例子解释了为什么通过 var fnSomeFunction = function(){};不会发生函数提升。
console.log(fnSomeFunction);//output: undefined'
fnSomeFunction(); // output: error fnSomeFunction is not a function
var fnSomeFunction = function(){console.log("i am here");
}
//fnSomeFunction 终究是变量,所以提升到最顶。至使在赋值语句之前无法调用函数。
复制代码
函数提升
通过常规函数声明可发生函数提升,且包括定义部分。
foo();//output: i am here
function foo(){
console.log('i am here');
}
复制代码
需要特别提醒,函数提升早于变量提升,但是var不会覆盖同名函数。
console.log(typeof foo); //output: function
var foo = 1;
console.log(typeof foo); //output:number
function foo(){
console.log('i am here');
}//等价于
function foo(){
console.log('i am here');
var foo
console.log(typeof foo); //output: function
foo = 1;
console.log(typeof foo); //output:number}
复制代码
转载于:https://juejin.im/post/5aa531a251882555677e2e1b
提升hoisting相关推荐
- 063_提升Hoisting
1. 提升(Hoisting)是JavaScript将声明移至顶部的默认行为. 2. var声明变量会被提升 2.1. 使用var声明的变量会被提升. 2.2. 实例 a = 5; // 把5赋值给a ...
- 一篇文章看懂变量提升(hoisting)
文章转自:一篇文章看懂变量提升(hoisting) - 知乎 前沿 大家对变量提升(hoisting)一定不陌生了,这篇文章希望可以建立一个系统的规则,以后碰到变量提升,可以重新看这篇文章,根据文中的 ...
- javascript变量声明提升(hoisting)
http://openwares.net/js/javascript_declaration_hoisting.html 可能要FQ一下 javascript的变量声明具有hoisting机制,Jav ...
- js变量提升hoisting
作用域(Scoping) 什么是作用域? 我对作用域的理解是只会对某个范围产生作用,而不会对外产生影响的封闭空间.在这样的一些空间里,外部不能访问内部变量,但内部可以访问外部变量. c语言的变量分为全 ...
- JS基礎:Hoisting 變量提升、TDZ 暫時性死區(Temporal Dead Zone)
JS 基礎:Hoisting 變量提升.TDZ 暫時性死區(Temporal Dead Zone) 文章目錄 JS 基礎:Hoisting 變量提升.TDZ 暫時性死區(Temporal Dead Z ...
- JavaScript变量提升(Hoisting)详解
文章出自个人博客https://knightyun.github.io/2019/09/02/js-hoisting,转载请申明. 概念 变量提升是 JavaScript 的一种执行机制,大致就是字面 ...
- TypeScript(ES6)变量提升(Hoisting)
ES6 新特性 ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const. let 声明的变量只在 let 所在的代码块内有效. const 声明一个只读的常 ...
- JS提升(hoisting)详解
近期在学习js,了解到js的一个名词,就是hoisting,进而了解了下js的解析机制 详情可参考:http://www.runoob.com/js/js-hoisting.html js的解析过程分 ...
- js变量提升_学习笔记:JS中的作用域和预解析
知识总结:谢静贤.汤昊 在javascript中作用域是非常重要的,本文将会说明作用域以及我们在工作,以及面试中的一些面试题,如果有不足的地方希望大家可以评论指出来,自己一定会及时的改正错误,避免大家 ...
最新文章
- 被Facebook终止合作,被谷歌下架,股价营收皆腰斩,猎豹只剩AI一根救命稻草了...
- 20. 有效的括号 golang 堆栈
- sass使用相关报错
- CCNA初学者应该知道的词
- 新海诚动画背景简单娱乐分析
- 教你3招解决PDF文字无法复制的所有问题!!!
- MoveIt! 学习笔记13 - KDL/IKFAST/TRAC-IK运动学求解器区别
- SAP库存盘点必要知识
- 过来,带你了解什么是物联网?
- 网络流24题(部分)
- PAT乙级真题全集-PAT (Basic Level) Practise (中文)
- 饮冰三年-人工智能-Python-17Python基础之模块与包
- 氤氲夜风中,楚楚温存
- matlab调用python自定义函数模块进行数据分析总结
- 基于Altium Designer进行可变电阻元件封装
- 第一性原理态密度计算的基本原理和应用场景
- IE能够打开网页 可是chrome和火狐打不开网页解决的方法
- GetCredentialCount 80004005
- 01 Wireshark软件安装和基本操作
- 研究方法的类型有哪些?(实例与技巧)