function aa(flag) {
// var test // 变量提升,函数最顶部
if(flag) {
var test = 'hello man'
} else {
//此处访问 test 值为 undefined
console.log(test)
}
//此处访问 test 值为 undefined
}
aa(false); //结果 undefined test被声明了 但是没有被赋值

总结: 用var声明变量时,变量提升到函数最顶部或全局最顶部。

         function aa(flag) {
if(flag) {
let test = 'hello man'
} else {
console.log(test)
}
}
aa(false); //结果 js运行报错 test is not defined test没有被声明

总结: ES6语法的let声明变量时,只在{} 代码块中被声明,所以在相应代码块之外引用,会运行报错。

一道关于js声明变量,var和let的面试题的更多相关文章

  1. js声明变量的三种方式

    JS 声明变量的三种方式 (1)使用变量步骤:a.声明-->b.赋值-->3.调用 正确用法: <script type="text/javascript"> ...

  2. JS声明变量的写法

    学习JS时候,声明变量是必须的,(虽然在没有声明变量的情况下,对某一变量赋值后, js自动认为已进行声明,但为了严谨,建议还是要进行声明)声明方式有传统的 var a: var b: var c: 也 ...

  3. js声明变量的三种方式及作用域

      js声明变量的三种方式及作用域 CreateTime--2017年9月11日17:19:11 Author:Marydon 一.参考链接 本篇文章的创作灵感来源于博主-奔跑的铃铛关于js中cons ...

  4. js 声明变量规范和特殊变量情况

    声明变量特殊情况    情况 说明 结果 var age ; console.log (name); 只声明 不赋值 undefined console.log(name) 不声明 不赋值  直接使用 ...

  5. js声明变量作用域会提前

    var s = 1; function test() { console.info(s); var s = 2; console.info(s); } test(); >>>unde ...

  6. ECMAScript1.1 js书写位置 | 声明变量 | 基本数据类型 | 数据类型转换 | 操作符 | 布尔类型的隐式转换

    js书写位置 由于在写css样式时使用的时双引号,所以我们在写js代码时建议使用单引号(‘’)! 行内式 <input type="button" value="点 ...

  7. Js高设笔记 & 声明变量与初始化变量

    第三章 数据类型   P25 1, var message;   //age变量尚未声明 alert(message);  //"undefined" alert(age);   ...

  8. 2、变量var关键字

    我们在看js声明变量的时候,经常会发现有的变量前会带var 但又的则没有,那么这究竟有什么区别呢? 如果这种情况发生在函数里的话, 加var定义的变量是局部变量,不加var定义的就成了全局变量. // ...

  9. 关于JS中变量提升的规则和原理的一点理解(二)

    上篇文章中讲到变量提升和函数提升的先后顺序时蒙了,后来去查了一下资料,特别整理一下. 在<你不知道的JavaScript(上卷)>一书的第40页中写到:函数会首先被提升,然后才是变量. 书 ...

随机推荐

  1. pycharm活动模板

    1.复制模板内容 2.文件设置: 点击+号:

  2. Educational Codeforces Round 47 (Rated for Div. 2)E.Intercity Travelling

    题目链接 大意:一段旅途长度N,中间可能存在N-1个休息站,连续走k长度时,疲劳值为a1+a2+...+aka_1+a_2+...+a_ka1​+a2​+...+ak​,休息后a1a_1a1​开始计, ...

  3. IDEA对新建java线程池的建议

    1 代码片段 ExecutorService pool = Executors.newCachedThreadPool(); 2 建议的三种模板 A 第一种,采用Apache的common.lang3 ...

  4. mysql 案例 ~ insert插入慢的场景

    一简介: insert出现慢日志中,应该怎么检测呢 二 理解:事务提交延迟,一般出现在写日志延迟的情况下,会有几种可能    场景:    1 RR模式下,insert等待gap lock锁导致的  ...

  5. 使用jQuery重置(reset)表单的方法

    由于JQuery中,提交表单是像下面这样的: 代码如下: $('#yigeform').submit() 所以,想当然的认为,重置表单,当然就是像下面这样子喽: 代码如下: $('#yigeform' ...

  6. python基础-----类和实例

    在python中,首字母大写的名称指的是类,这个类定义中括号的内容是空的. 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板而实例是根据类创建出来的一个个具体 ...

  7. python异常处理的两种写法

    (1)第一种写法 需要注意的是 在抛出异常的时候,HTTPError必须写在URLError之前,因为只有这样前者才能抛出异常,不然的话就会被后者拦截,提前抛出异常. from urllib.requ ...

  8. xadmin插件开发

    参考:http://blog.csdn.net/qq_15682489/article/details/70174784 项目中新添加的organization模块需要在toolbar中添加“课表详细 ...

  9. windowns下excel2013快速生成月报表

    作者:邓聪聪 windowns下excel快速生成月报表,省去了手工复制繁琐的过程 Sub AutoCopySheets() Dim i, j As Integer i = 1 j = 11 For ...

  10. 码云 Git No network connection

    背景 git,好久没用了都.心血来潮还是赶紧熟悉下吧.果不其然,每次要熟悉或开始一个东西,立马就出现问题.本来好好的环境竟然不行了,搞定后感觉应该是换了网络环境的事.这倒次要,主要让我想起了最初学习g ...