博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js声明提升
阅读量:7069 次
发布时间:2019-06-28

本文共 752 字,大约阅读时间需要 2 分钟。

浏览器引擎会在解释javascript代码之前首先对其进行编译。编译阶段中的一部分工作就是找到所有的声明,并用合适的作用域将它们关联起来,包括变量和函数在内的所有声明都会在任何代码被执行前首先被处理,置于作用域前端。

变量声明提升

变量作用域指变量起作用的范围。变量分为全局变量和局部变量。全局变量在全局都拥有定义;而局部变量只能在函数内有效。

在函数体内,同名的局部变量或者参数的优先级会高于全局变量。也就是说,如果函数内存在和全局变量同名的局部变量或者参数,那么全局变量将会被局部变量覆盖。

es6前是没有块级作用域的,通过声明提升变量无论在哪里声明,都会有定义,只有定义没有值是undefined

console.log(a);   var a=1;   console.log(a);

上面函数执行时类似如下过程

var a;  console.log(a);  a=1;  console.log(a);

函数声明提升

函数的创建方式

函数声明函数表达式

函数声明 function handleClick(){}

函数表达式 var a=function(){}

两种方式不同点 函数声明有有声明的提升,表达式只有定义以后才能使用

下面例子可以看出

console.log(a)   function a(){      console.log(1)   }   var a=function(){      console.log(2)   }   console.log(a);

当函数和变量的声明,前者优先级更高

"use strict"; console.log(a); // fn a function a (){ } var a=1; console.log(a); // a 1

转载地址:http://bzell.baihongyu.com/

你可能感兴趣的文章
网页的背景图片代码
查看>>
SURF算法与源码分析、下
查看>>
高速排序算法
查看>>
数学图形之伞形
查看>>
vs2008打包公布程序
查看>>
浅谈WebService的版本兼容性设计
查看>>
随便弄个名字 以后改
查看>>
opennebula auth module ldap
查看>>
Ubuntu打开终端的方法三种
查看>>
zabbix 通过自定义key完成网卡监控
查看>>
WifiManager类具体解释
查看>>
cocos2dx3.2 android平台搭建开发环境纠错备忘录
查看>>
CDN(内容分发网络)技术原理
查看>>
Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问)
查看>>
提高代码编码的效率,习惯非常重要!
查看>>
maven最全教程
查看>>
对Inductive Bias(归纳偏置)的理解
查看>>
chest
查看>>
hdu 1215 七夕节
查看>>
老调重弹:JDBC系列 之 <驱动载入原理全面解析>
查看>>