一道面试题被虐惨了 看了书看了资料整理的 不记得看了谁的文章了 这是整理后 有部分一样的不要打我//


变量声明提升

<!DOCTYPE html>
<html>
<head><script>
var i = 20;
function n(){alert(i);
};
n();
</script>
</head>
</html>   //结果是20

<!DOCTYPE html>
<html>
<head><script>
var i = 20;
function n(){alert(i);var i = 50;
};
n();
</script>
</head>
</html>   //结果是undefined

↑变量声明提升会把变量声明提前,但是变量初始化还在后面,如果在变量初始化前面输出,变量还未初始化,就会alert出undefined,这是变量声明提升。

函数声明提升是在执行代码之前会读取函数声明。可以把函数声明放在调用他的语句后面。

函数声明是把一个函数值赋值给了变量,所以可以进行函数声明提前。函数表达式是一个表达式是把函数对象赋值给了变量,所以不能进行函数声明提前。

函数表达式和函数声明的区别:

函数声明格式
function(arg0,arg1,arg2){//函数体
} 

函数表达式格式
var functionName = function(arg0,arg1,arg2){//函数体
}

1、函数声明必须有标识符,也就是函数名,函数表达式可以省略函数名。

2、函数声明提升,可以把函数声明放在调用他的语句后面。函数表达式不可以,会报错。

3、函数声明语句可以出现在全局代码中,或者内嵌在其他函数中,不能出现在循环、条件判断或者try/finally以及with语句中。

转载于:https://www.cnblogs.com/Narcotic/p/6233136.html

变量声明提升和函数声明提升相关推荐

  1. JS变量(声明)提升和函数声明提升

    目录 一.概念理解 1.变量声明提升 2.函数声明提升(又叫函数提升) 变量提升和函数提升的优先级 小结: 一.概念理解 变量提升:在当前作用于中,js代码自上而下执行之前,浏览器会把所有带var/f ...

  2. JavaScript 中的 Hoisting (变量提升和函数声明提升)

    如何将 函数声明 / 变量 "移动" 到作用域的顶部. 术语 Hoisting(提升) 在很多 JavaScript 博文中被用来解释标识符的解析.其实 Hoisting(提升) ...

  3. js中变量名提升和函数名提升

    首先,js中变量没有块级作用域,但是有函数作用域,即只有函数可以约数变量的作用域. 并且,函数的实质也是一个变量,所以可以改变它的值,即赋值.所以变量名提升和函数名提升非常相像. 1.变量名的提升发生 ...

  4. c语言常用的格式声明,c语言函数声明格式是什么

    c语言函数声明格式是什么 c语言函数声明格式是"函数类型 函数名称(参数列表);".在函数声明中的参数列表中,不需要给出具体的变量名称,但必须给出每个变量的类型. 函数声明,不是说 ...

  5. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

  6. python是什么语言、即变量不需要显示声明数据类型-Python函数声明以及与其他编程语言数据类型的比较...

    ** 1.函数声明 ** 与其它大多数语言一样 Python 有函数,但是它没有像 C++ 一样的独立的头文件:或者像 Pascal 一样的分离的 interface / implementation ...

  7. 函数声明和变量声明提升

    var a; // 声明一个变量,标识符为a function a() { // 声明一个函数,标示符也为a } alert(typeof a); 显示的是"function",即 ...

  8. JavaScript函数声明提升

    首先,JavaScript中函数有两种创建方式,即函数声明.函数表达式两种. 1.函数声明. function boo(){console.log(123); } boo() 2.函数表达式. var ...

  9. 函数的自执行,变量提升和函数提升

    其实之前虽然刚开始学习JavaScript的时候经常看到function  add(){}.var add=function(){}.function(){}之类的这种写法,但是具体是什么叫什么却没有 ...

  10. 作用域、变量提升、函数提升、数据类型

    一.作用域分类 (作用域范围内定义的变量,整个作用域都可以访问) 1. 全局作用域 使用var声明(或者不严格模式下没有声明)且在函数外定义的变量,其作用域范围是全局的,称其为全局作用域. 2. 函数 ...

最新文章

  1. swift使用xib绘制UIView
  2. html 内部浮动外部不,CSS:外部层高度自适应内部浮动层高度的方法
  3. Java 网络通信必备之socket通信基本原理介绍
  4. .NET(C#)有哪些主流的ORM框架
  5. MyEclipse使用总结——MyEclipse文件查找技巧 ctrl+shift+R ctrl+H
  6. python终端会话_如何为Python终端提供持久性历史记录
  7. 3- 基于代理 Dao 实现 CRUD 操作
  8. vue element form 默认校验
  9. bootstrapmodel确认操作框_Bootstrap使用模态框modal实现表单提交弹出框
  10. linux下安装百度云音乐,linux 安装网易云音乐
  11. vue项目中我的收货地址功能做法(添加地址、编辑地址、删除地址、默认地址、省市区三级联动)
  12. CRC校验工具----CRC8校验 (x8+x2+x+1)
  13. html网页制作的图片打不开,网页中的图片打不开怎么办?原因与解决办法
  14. 2022-2028年中国现代服务行业企业投资项目指引及机会战略分析报告
  15. 河南省周口市安吉软件测试培训中心第一次软件测试课程——软件测试期末考试(含答案)
  16. 华为云宝塔linux,华为云上安装宝塔面板
  17. vector 通俗易懂描述
  18. 稀疏矩阵的存储方法(DOK、LIL、COO、CSR, CRS)
  19. 计算机叶老师,叶茫 - 教师简历 CV- 武汉大学计算机学院
  20. 3G内存 android7.0卡,这年头竟然还有 1GB 内存的手机?还能运行 Android 7.0?!

热门文章

  1. c++ 协程_深入理解异步I/O+epoll+协程
  2. ❤️区块链Hyperledger Fabric 老版本 1.1.0 快速部署安装 教程合集❤️
  3. 微信小程序 eventChannel在页面间传参
  4. 关于账号密码校验的两种IO流操作
  5. JavaWeb学习(二)Maven
  6. springboot学习笔记2106版
  7. 7c盘满了怎么扩容_C盘爆满怎么办?扩容!
  8. 1.2.PHP7.1 狐教程-环境(Win下 PHP开发环境 配置及安装)
  9. Zuul 代理文件上传、为路由提供 hystrix 回退、过滤器、超时时间
  10. Java 面试——字符串操作、值传递、重载与重写