函数提升:

对于所有的变量,无论函数体的何处进行声明,都会在后台被后台被提升到函数顶部。而对于函数同样适用,其原因在于函数只是分配给变量的对象。当使用函数声明时,函数定义也被提升,而不仅仅只是函数声明。

function foo(){alert('global foo');}function bar (){alert('global bar');}function hoistMe(){console.log(typeof foo); //function 变量foo以及实现都被提升 console.log(typeof bar); //undefined bar变量被提升 函数实现没有被提升 foo(); //global foo bar(); //Uncaught TypeError: bar is not a function function foo(){ console.log('global foo'); } var bar =function(){ console.log('local foo'); }; } hoistMe();

//hoistMe()函数中的foo()和bar移动到了顶部,从而覆盖了foo和bar函数

作用域:

javascript中仅存在函数作用域。在函数内部以var 关键字定义的任何变量都是局部变量,对于函数外部是不可见的。如果if条件语句或在for、while循环中,使用var关键字定义一个变量,这并不意味着该变量对于if或for来说是局部变量。它仅对包装函数来说是局部变量,并且如果没有包装函数,它将成为一个全局函数。

//这里for中定义的i是局部变量。作用域仅在part中function part(){for(var i=0;i<10;i++){//..........
   }
}//这里这里for中定义的i是全部变量。for(var i=0;i<10;i++){//..........} 

函数命名属性:

function fn(){} //函数声明

var fn=function(){};//函数表达式

var fn=function fn(){};//函数命名表达式

在调试器中调试时,name属性是非常有用的,当调试器需要展示函数中的错误时,它可以检测name属性是否存在,并将其作为一个指示符。

name属性也可用于在自身内部递归调用同一个函数。

 

转载于:https://www.cnblogs.com/CloverH/p/5178243.html

Javascript模式——函数提升 (笔记)相关推荐

  1. 《JavaScript模式》读书笔记一:基本技巧

    <JavaScript模式>的读书笔记,个人向! 更新进度随我的阅读进度 基本技巧 尽量少用全局变量 防止变量污染 注意JS变量提升问题 尽量使用单一var模式,只使用一个var在函数顶部 ...

  2. Javascript中函数提升和变量提升

    词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 具体步骤如下: 函数在运行的瞬间,生成一个活动对象(Active ...

  3. 《JavaScript 模式》读书笔记

    简介 在软件开发过程中,模式是指一个通用问题的解决方案.一个模式不仅仅是一个可以用来复制粘贴的代码解决方案,更多地是提供了一个更好的实践经验.有用的抽象化表示和解决一类问题的模板. 对象有两大类: 本 ...

  4. 关于JavaScript的变量和函数提升

    第一种理解方式:let和const不能被使用,直到他们被声明 对于var定义的变量,解析器会提升其到作用域顶部. // Outputs: undefined console.log(x);var x ...

  5. javascript变量提升/函数提升

    首先 javascript 是一种弱类型.动态的.解释型的脚本语言. 弱类型:类型检查不严格,偏向于容忍隐式类型转换. 强类型:类型检查严格,偏向于不容忍隐式类型转换. 动态类型:运行的时候执行类型检 ...

  6. JavaScript系列文章:变量提升和函数提升

    第一篇文章中提到了变量的提升,所以今天就来介绍一下变量提升和函数提升.这个知识点可谓是老生常谈了,不过其中有些细节方面博主很想借此机会,好好总结一下. 今天主要介绍以下几点: 1. 变量提升 2. 函 ...

  7. javaScript变量提升以及函数提升

    变量的声明赋值 var a = 1; 上面的代码先声明变量 a,然后在变量 a 与数值 1 之间建立引用关系,称为将数值 1 "赋值"给变量 a.以后,引用变量名 a 就会得到数值 ...

  8. JavaScript变量提升:函数提升要比变量提升更猛

    今天,又由一到题目引发了一场我跟JS基础的较量:首先是 var getName = function(){alert(1)}; function getName(){alert(2)};getName ...

  9. html5前端开发培训机构,JavaScript变量声明提升

    学习路线 第一阶段:网页制作 HTML:常用标签,锚点,列表标签,表单标签,表格标签,标签分类,标签语义化,注释,字符实体 CSS:CSS介绍,全局样式,行内样式,内联样式,选择器,字体样式值,文本样 ...

  10. 7 种 Javascript 常用设计模式学习笔记

    7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...

最新文章

  1. appium: adb server is out of date.killing
  2. RHCS图形界面建立GFS共享上
  3. ImportError: No module named babel.dates
  4. Vue 组件中 移动 this.$el 的注意事项
  5. 喜报 | 大地影院集团签约神策数据,影院 + 数据化高光时刻开启
  6. 排序算法-01冒泡排序(Python实现)
  7. 对输入法的人机交互设计评价
  8. 软件评测师教程书本对软考的作用有多大?
  9. 计算机网络(第七版)知识点总结第一章——概述
  10. 无法读源文件或磁盘_文件、文件夹、磁盘加密 -我们推荐这个便宜的解决方案!...
  11. NFT抢购合集工具(免费)
  12. WIn7 解决 - ReadyBoost 未启用,因为该计算机的运行速度足够快
  13. 量子前沿英雄谱|激光界泰斗Robert Byer(罗伯特·拜尔)
  14. 【MTK 6737】Modem编译
  15. 老钓友分享蚯蚓钓鲤鱼配方
  16. zcmu 1919: kirito's 星爆气流斩
  17. 服务器配置与软件安装合集
  18. 华为云主机怎么样?华为云弹性云服务器有什么优势?
  19. 一名平庸程序员的自白
  20. LeetCode日拱一卒

热门文章

  1. 第1章 通信网概述作业
  2. 计算机基础与C语言程序设计书籍,C语言程序设计(21世纪高等学校计算机基础实用规划教材)...
  3. python实现 Floyd算法求解最短路径距离问题
  4. 2021-06-18 链接标签
  5. 以太坊虚拟机 EVM(1)EVMC interpreter
  6. kubernetes Containerd shim docker关系
  7. 微信小程序云开发视频教程上线啦
  8. 微信小程序云开发教程-微信小程序的API入门-获取用户身份信息系列API
  9. 微信小程序云开发教程-WXSS入门-常用样式
  10. 关于random的多种用法