Learn-JavaScript-with-MDN 系列文章: 01. var & let & const 对比

var & let & const 区别

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const




var, let, const 区别 All In One

  1. 是否存在 hoisting

var 存在 hoisting; let, const 不存在 hoisting;

  1. 作用域不同

var 是全局scope或函数 scope; let, const 是 block scope;

全局作用域里面定义的 const, let 不会挂载到 window 对象上面;

全局作用域里面定义的 var 会挂载到 window 对象上面;

const log = console.log;

var a = 1;
log(`a =`, window.b); let b = 1;
log(`b =`, window.b); const c = 1;
log(`c =`, window.c);
  1. 能否重复声明

var 可以重复声明; let, const 不可以重复声明

  1. 能否重新赋值

var 可以重新赋值, let 可以重新赋值; const 不可以重新赋值, 但是如果是 Object 可以,修改 Object 的属性值;

  1. 声明时否要初始化

var 可选初始化; let 可选初始化, 但是存在 TDZ(暂时死区); const 声明时必须初始化;

未经授权,禁止转载

版权所有 copyright xgqfrms 2019-forever

原文链接: https://www.cnblogs.com/xgqfrms/p/11421323.html

scope & hoisting

https://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html

https://repl.it/@xgqfrms/Function-hoisting-greater-var-hoisting

https://stackoverflow.com/questions/7506844/javascript-function-scoping-and-hoisting

function hoisting

"use strict";

/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2020-05-30
* @modified
*
* @description function-hoisting.js
* @augments
* @example
* @link
*
*/ const log = console.log; var a = 1;
function b() {
a = 10;
log(`local a`, a)
return;
// function hoisting 优先级大于 variable hoisting
function a() {}
} b();
log(`global a`, a); // local a 10
// global a 1
const log = console.log;

// define "a" in global scope
var a = 1; function b() {
// define "a" in local scope
var a ;
// assign function to a
a = function () {};
// var a = function () {};
// overwrites local variable "a"
a = 10;
log(`local a`, a);
return;
} b();
// log global variable "a"
log(`global a`, a); // local a 10
// global a 1

js var hoisting

  1. function

  2. var

https://www.sitepoint.com/5-typical-javascript-interview-exercises/

refs



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


最新文章

  1. .net点选验证码实现思路分享
  2. [转]js实现各种进制的转换
  3. 调整ESX的VMFS磁盘格式的块大小,让单个虚拟磁盘支持更大容量
  4. ecshop的弊病和需要修改的地方,持续更新
  5. WPF Window 服务安装
  6. [转]vector iterator not incrementable 的问题
  7. 大数阶乘(c语言)
  8. mongodb的高级操作(聚合框架)
  9. 数据库sql整体整理
  10. 《Linux设备驱动开发详解(第2版)》配套视频登录51cto教育频道
  11. J - Borg Maze - poj 3026(BFS+prim)
  12. JVM启动过程——JVM之一
  13. .Net程序猿乐Android发展---(10)框架布局FrameLayout
  14. js变量数组
  15. SpringMVC文件上传报错org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
  16. ZZZPHP1.61 代码审计-从SQL注入到Getshell
  17. Linux printf命令详解
  18. CentOS上手工部署kubernetes集群
  19. css美化页面
  20. FastReport报表打印总页数的问题?

热门文章

  1. Excel导出中HttpServletResponse消息头参数设置
  2. linux:搭建java web环境
  3. Spring Boot 整合 Freemarker
  4. redis学习教程一《Redis的安装和配置》
  5. string知识
  6. 使用mybatis自动实现接口封装返回结果集
  7. 2021年的十五个DevOps趋势预测
  8. 调试lcd时候给linux单板移植tslib
  9. 记录tomcat服务器开启关闭时间
  10. poj 2398Toy Storage