JS variable hoisting
JS Hoisting
在function内
Example 1 - 没有用 var 来declare variable. Hoisting will happen.
Example 2 - 有用 var 来declare variable
Example 1
t2.js
- 注意: 以下的 a 变量 没有 用 var 来declare。
function foo(x){if (x > 5){a = 'positive' }else{a = 'negative'}console.log("inside foo=",a);
}
foo(100)
console.log("outside foo=",a)
-output
inakamono@ninja MINGW64 ~/wk/coding/es6-the-right-parts/ex0
$ node t2.js
inside foo= positive
outside foo= positive
(base)
t2.js 的 a 变量会被 hoisted 提升至 global context 如下
var a// 《------a 被 hoisted 提升至 global contextfunction foo(x){if (x > 5){a = 'positive'}else{a = 'negative'}console.log("inside foo=",a);
}
foo(100)
console.log("outside foo=",a) ;
Example 2
function foo(x){if (x > 5){var a = 'positive'}else{var a = 'negative'}console.log("inside foo=",a);
}
foo(100)
console.log("outside foo=",a) ;
- output
解释:在 foo function 内declare 的var a 的scope 没有被hoisted 至 global context. var a 的scope 只有被限制在 foo function 内。 所以 run 了foo(100) 之后, a 就不能被 called 了。
inakamono@ninja MINGW64 ~/wk/coding/es6-the-right-parts/ex0
$ node t2.js
inside foo= positive
C:\Users\inakamono\wk\coding\es6-the-right-parts\ex0\t2.js:10
console.log("outside foo=",a) ;^ReferenceError: a is not definedat Object.<anonymous> (C:\Users\inakamono\wk\coding\es6-the-right-parts\ex0\t2.js:10:28)at Module._compile (internal/modules/cjs/loader.js:956:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)at Module.load (internal/modules/cjs/loader.js:812:32)at Function.Module._load (internal/modules/cjs/loader.js:724:14)at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)at internal/main/run_main_module.js:17:11
JS variable hoisting相关推荐
- 用__postback传递JavaScript变量到c#(pass a js variable to C# by a __postback )
之前发过用POST方式的http://www.cnblogs.com/blodfox777/articles/1271912.html 而用__postback比较高阶,代码出自NC01 privat ...
- JavaScript 中的 hoisting 到底是甚麼 ?
JavaScript 中的 hoisting 到底是甚麼 ? 前言 正文 到底什麼是 hoisting? let const 與 hoisting 為什麼要有 hoisting? hoisting 到 ...
- js变量作用域和变量提升
在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解. 变量作用域 "一个变量的作用域表示这个变 ...
- JavaScript最全编码规范
转载: JavaScript最全编码规范 类型 ●基本类型:访问基本类型时,应该直接操作类型值 ●string ●number ●boolean ●null ●undefined var foo = ...
- java犯的小错误_[Java教程]十个JavaScript中易犯的小错误,你中了几枪?
[Java教程]十个JavaScript中易犯的小错误,你中了几枪? 0 2015-06-01 12:00:19 序言 在今天,JavaScript已经成为了网页编辑的核心.尤其是过去的几年,互联网见 ...
- javascript_如何不再害怕JavaScript
javascript 成为一名出色的Javascript开发人员要知道的事情 (Things to know to be a great Javascript developer) Have you ...
- ES6中修复的5个JavaScript“不良”部分
by rajaraodv 通过rajaraodv ES6中修复的5个JavaScript"不良"部分 (5 JavaScript "Bad" Parts Tha ...
- 分享 10 个最常见的 JavaScript 问题
来源 | https://www.toptal.com/javascript/10-most-common-javascript-mistakes 如今,JavaScript几乎是所有现代web应用程 ...
- 前端逻辑练习题+学习记录 不定期更新
编程题 1.返回数组中最大的数字(reduce函数) largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1 ...
最新文章
- Tomcat高级部分-使用特定模块和软件反向代理请求到后端tomcat实现负载均衡和session保持...
- spring mvc 与Struts的认识
- Jquery中表单序列化提交到后台是怎样进行URL解码查看参数
- java web开发学习手册_Java 人必备学习手册开发下载!
- 【CSS3】CSS3背景相关属性大全
- 华为鸿蒙重磅更新,华为重磅官宣!鸿蒙系统升级机型遭曝光:多达55款产品支持升级...
- 21_多易教育之《yiee数据运营系统》用户画像-模型标签流失预测篇兼退拒风险概率预测篇
- 中控考勤机无线连接不上服务器,中控考勤机连接不上电脑的解决方法
- 普中51单片机开发板笔记
- SAP MM 发货到成本中心场景下的批次确定
- 转载:【Gradle教程】Gradle 基础入门
- 计算机中英汉字段如何切换,电脑上中英文切换按哪个键
- 如何修改Safari浏览器网页字体大小?
- php 静态变量 引用,PHP的返回引用(方法名前加)和局部静态变量(static)
- 阿里品牌数据银行:最全数据银行介绍
- idea 查看源码 /* compiled code*/
- 计算机网络发展的第四阶段特点,计算机网络基础考试重点.doc
- windows的由来与详细介绍
- setLenient(true/false)
- 使用JS模拟键盘、鼠标操作