var a = 10;

function f1(){

  console.log(a)  //undefined  函数变量提升了 函数执行之前想创建了函数的EC 把函数里面声明的变量初始化undefined  a先访问了f1内部的了

  var a = 19;  给局部变量赋值

  console.log(a)  19

}

f1();

// 面试题

1、

var a = 18;

function d(){

  console.log(a)  //undefined 内部变量a提升

  var a = {age:19}  

  console.log(a)  // {age:19}

}

d();

console.log(a)  //18

2、

if(!("a" in window)){  //"a" in window    true 因为 var a =9 变量提升了

  var a = 1;

}

console.log(a)  //undefined

3、

console.log(a)  //function a(){}

var a = 20;

console.log(a)  //20

function a(){

}

4、

f()

console.log(a)  // 报错未定义

console.log(b)  //9

console.log(c)  //9

function f(){

  var a = b = c = 9;  a局部变量 bc全局变量  var a= 9,b=9,c=9;定义三个局部变量

console.log(a)  //9

console.log(b)  //9

console.log(c)  //9

}

5、

f()

function f(){

  for(var k=0; k<10; k++){

    console.log(k)  //0-9

  }

  console.log(k)  //10

}

js高级-函数变量提升的更多相关文章

  1. JS高级_变量提升和函数提升

    先执行变量提升,后执行函数提升 function a(){} var a console.log(typeof a)//function

  2. js 高级函数 之示例

    js 高级函数作用域安全构造函数 function Person(name, age)    {        this.name = name;        this.age = age;     ...

  3. js中的变量提升与函数提升

    先看看一个简单的代码 var str='Hello World'; alert(str);//弹出 Hello World 再看一段代码: var v='Hello World'; (function ...

  4. js中的变量提升和函数提升

    从上周开始,我所在的学习小组正式开始了angular的学习,angular是全面支持es6的,所以语法上和以前的angular有了很大的不同,比如变量声明时就抛弃了var,而选择了let和const: ...

  5. JS 会有变量提升和函数提升

    JavaScript变量函数声明提升(Hoisting)是在 Javascript 中执行上下文工作方式的一种认识(也可以说是一种预编译),从字面意义上看,"变量提升"意味着变量和 ...

  6. JS中的 变量提升

    首先纠正下,文章标题里的 “变量提升” 名词是随大流叫法,“变量提升” 改为 “标识符提升” 更准确.因为变量一般指使用 var 声明的标识符,JS 里使用 function 声明的标识符也存在提升( ...

  7. js 作用域,变量提升

    先看下面一段代码: 代码执行的结果是: 1st alert : a = 0 2nd alert : a = undefined 5th alert : a = 0 3rd alert : a = 3 ...

  8. JS 作用域与变量提升---JS 学习笔记(三)

    你知道下面的JavaScript代码执行时会输出什么吗? var foo = 1; function bar() { if (!foo) { var foo = 10; } console.log(f ...

  9. js中的变量提升(hoisting)

    来看如下代码: function HelloJS(){ var array = [1,2,3,4,5]; for(var i in array){ } alert(i); } HelloJS(); a ...

随机推荐

  1. Android 真机投影到PC端,真机投影工具;Vysor

    Vysor可以把Android真机投影到PC端,也就是电脑上:手机端和PC端课同步操作: Vysor是Chrome浏览器的插件,我们想要添加这个插件需要FQ: 从这里可以直接下载:Vysor

  2. studio2.3app签名打包安装失败,找不到签名证书。

    Androidstudio升级到2.3后,打包时和之前不一样了. 如果只选择V2,是未签名的.所以要把V1和V2都打勾.

  3. Web Service进阶

    选框架犹如选媳妇,选来选去,最后我还是选了“丑媳妇(CXF)”,为什么是它?因为 CXF 是 Apache 旗下的一款非常优秀的 WS 开源框架,具备轻量级的特性,而且能无缝整合到 Spring 中. ...

  4. vue-demo

    github地址:  https://github.com/TingtingYin/vue-demo

  5. JDK 8 中Lambda表达式的使用

    认识Lambda表达式 首先来引入一个示例 new Thread(new Runnable() {     @Override     public void run() {         Syst ...

  6. jquery前期总结,及实例

    一.元素查找 1.选择器 id=d------------------------------------------>$("#d") class=c1----------- ...

  7. apache atlas资料收集

    apache atlas  http://atlas.apache.org/ http://blog.csdn.net/ganglia/article/details/51457691

  8. JavaWeb学习篇--Filter过滤器

    Filter过滤器简介 ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的 java 类实现了这个接口,则把这个java类称之为过滤器Filter. WEB服务器每次在调用 ...

  9. Mybatis十( mybatis其他使用)

    1.批量执行 public void addUser(User user); <insert id="addUser" parameterType="model.U ...

  10. webpack环境搭建

    环境搭建参考:Webpack+vue+element逐步搭建开发环境 webpack入门:http://www.jianshu.com/p/42e11515c10f ----------------- ...