Javascript模式——函数提升 (笔记)
函数提升:
对于所有的变量,无论函数体的何处进行声明,都会在后台被后台被提升到函数顶部。而对于函数同样适用,其原因在于函数只是分配给变量的对象。当使用函数声明时,函数定义也被提升,而不仅仅只是函数声明。
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模式——函数提升 (笔记)相关推荐
- 《JavaScript模式》读书笔记一:基本技巧
<JavaScript模式>的读书笔记,个人向! 更新进度随我的阅读进度 基本技巧 尽量少用全局变量 防止变量污染 注意JS变量提升问题 尽量使用单一var模式,只使用一个var在函数顶部 ...
- Javascript中函数提升和变量提升
词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 具体步骤如下: 函数在运行的瞬间,生成一个活动对象(Active ...
- 《JavaScript 模式》读书笔记
简介 在软件开发过程中,模式是指一个通用问题的解决方案.一个模式不仅仅是一个可以用来复制粘贴的代码解决方案,更多地是提供了一个更好的实践经验.有用的抽象化表示和解决一类问题的模板. 对象有两大类: 本 ...
- 关于JavaScript的变量和函数提升
第一种理解方式:let和const不能被使用,直到他们被声明 对于var定义的变量,解析器会提升其到作用域顶部. // Outputs: undefined console.log(x);var x ...
- javascript变量提升/函数提升
首先 javascript 是一种弱类型.动态的.解释型的脚本语言. 弱类型:类型检查不严格,偏向于容忍隐式类型转换. 强类型:类型检查严格,偏向于不容忍隐式类型转换. 动态类型:运行的时候执行类型检 ...
- JavaScript系列文章:变量提升和函数提升
第一篇文章中提到了变量的提升,所以今天就来介绍一下变量提升和函数提升.这个知识点可谓是老生常谈了,不过其中有些细节方面博主很想借此机会,好好总结一下. 今天主要介绍以下几点: 1. 变量提升 2. 函 ...
- javaScript变量提升以及函数提升
变量的声明赋值 var a = 1; 上面的代码先声明变量 a,然后在变量 a 与数值 1 之间建立引用关系,称为将数值 1 "赋值"给变量 a.以后,引用变量名 a 就会得到数值 ...
- JavaScript变量提升:函数提升要比变量提升更猛
今天,又由一到题目引发了一场我跟JS基础的较量:首先是 var getName = function(){alert(1)}; function getName(){alert(2)};getName ...
- html5前端开发培训机构,JavaScript变量声明提升
学习路线 第一阶段:网页制作 HTML:常用标签,锚点,列表标签,表单标签,表格标签,标签分类,标签语义化,注释,字符实体 CSS:CSS介绍,全局样式,行内样式,内联样式,选择器,字体样式值,文本样 ...
- 7 种 Javascript 常用设计模式学习笔记
7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...
最新文章
- appium: adb server is out of date.killing
- RHCS图形界面建立GFS共享上
- ImportError: No module named babel.dates
- Vue 组件中 移动 this.$el 的注意事项
- 喜报 | 大地影院集团签约神策数据,影院 + 数据化高光时刻开启
- 排序算法-01冒泡排序(Python实现)
- 对输入法的人机交互设计评价
- 软件评测师教程书本对软考的作用有多大?
- 计算机网络(第七版)知识点总结第一章——概述
- 无法读源文件或磁盘_文件、文件夹、磁盘加密 -我们推荐这个便宜的解决方案!...
- NFT抢购合集工具(免费)
- WIn7 解决 - ReadyBoost 未启用,因为该计算机的运行速度足够快
- 量子前沿英雄谱|激光界泰斗Robert Byer(罗伯特·拜尔)
- 【MTK 6737】Modem编译
- 老钓友分享蚯蚓钓鲤鱼配方
- zcmu 1919: kirito's 星爆气流斩
- 服务器配置与软件安装合集
- 华为云主机怎么样?华为云弹性云服务器有什么优势?
- 一名平庸程序员的自白
- LeetCode日拱一卒