深刻理解js的变量提高和函数提高

1、变量提高javascript

  变量提高:在当前做用于中,js代码自上而下执行以前,浏览器会把全部带var/function关键字进行提早声明或定义。带var的关键字只是提早声明一下,带function的关键字在变量提高阶段把定义和声明都完成了。java

  1.   console.log(global); // undefined
  2.   var global = 'global';
  3.   console.log(global); // global
  4.   function fn () {
  5.     console.log(a); // undefined
  6.     var = 'aaa';
  7.     console.log(a); // aaa
  8.   }
  9.   fn();

  之因此会是以上的打印结果,是因为js的变量提高,实际上上面的代码是按照如下来执行的:浏览器

  1.   var global; // 变量提高,全局做用域范围内,此时只是声明,并无赋值
  2.   console.log(global); // undefined
  3.   global = 'global'// 此时才赋值
  4.   console.log(global); // 打印出global
 
  1.   function fn () {
  2.     var a; // 变量提高,函数做用域范围内
  3.     console.log(a);
  4.     a = 'abc';
  5.     console.log(a);
  6.   }
  7.   fn();

  

var nums = 99; yu() function yu(){ console.log(nums) //undefined 变量提高 yu函数里的声明至关于var nums; console.log(nums);nums=78
    var nums = 78; }

 

2、函数提高函数

  js中建立函数有两种方式:函数声明式和函数字面量式。只有函数声明才存在函数提高!如:spa

  1.   console.log(f1); // function f1() {}   
  2.   console.log(f2); // undefined  
  3.   function  f1() {}
  4.   var f2 = function() {}

  只因此会有以上的打印结果,是因为js中的函数提高致使代码其实是按照如下来执行的:code

  1. function f1() {} // 函数提高,整个代码块提高到文件的最开始<br>     console.log(f1);   
  2.   console.log(f2);   
  3.   varf2 = function() {}

结语:在函数与变量之间,函数首先会被提高,而后才是变量。blog

第一次写博客,写的不怎么好,继续努力。ip

相关文章
相关标签/搜索