对var的新笔记
2024-08-28 02:38:13
今天看阮老师的ES6入门时,看见一个对我来说从没想到过的var赋值变量导致的错误,故记录一下
var tmp = new Date(); function f() { console.log(tmp); if (false) { var tmp = 'hello world'; } } f(); // undefined
这种情况的起因是变量提升
我的理解是在该函数调用时,因为使用var创建的变量,作用范围只有全局与函数两种,故引擎先把所有使用var创建的变量进行创建,但并不进行赋值,创建完所有var创建的变量后,程序再从函数内第一行代码开始运行。
因为内部创建了和外部相同的变量名,内部变量便在函数内覆盖了外部变量,而输出该变量时,该变量还未赋值,便输出了undefined。
而使用let时,let只会在if下的代码块中创建局部变量tmp,未在if代码块中的代码则还是可以使用外部的tmp变量。
使用开发者工具测试了一下,和所想暂时未有冲突。
最新文章
- 【原创】.NET平台机器学习组件-Infer.NET连载(二)贝叶斯分类器
- PostgreSQL-角色、库、模式、表
- LeetCode-Group Shifted Strings
- Android中dp和px之间进行转换
- Unity GameObject.activeSelf, GameObject.activeInHierarchy,GameObject.SetActive和SetActiveRecursively
- 用MT.exe将exe中的manifest文件提取出来和将manifest文件放入exe中
- ajax取返回值的方法
- c中关于#与##的简易使用
- IIS MIME的 映射 网站有些类型的文件不能通过网页访问
- 一个web应用的诞生(7)--结构调整
- Selenium_WebDriver_定位元素
- python模拟蒙特·卡罗法计算圆周率
- React文档(十九)不使用ES6
- arduino json 解析
- Django 中的Form表单认证
- async/await让你的代码更加优雅
- Web操作web.config
- VMWare 虚拟机 安装 Mac OS X
- PHP SQL查询结果在页面上是乱码
- linux automake 交叉编译
热门文章
- ASP.NET MVC默认配置如有跳转到指定的Area区域中的对应程序中
- 【TensorFlow篇】--Tensorflow框架可视化之Tensorboard
- load data infile
- 如何在ASP.NET Core程序启动时运行异步任务(3)
- unity中ScriptableObject在assetbundle中的加载
- libevent和libcurl实现http和https服务器 cJSON使用
- count()聚合函数正确用法
- C++ 编译期封装-Pimpl技术
- matplotlib安装
- Go channel实现源码分析