摘要:函数声明提升定义函数有两种方式函数声明函数表达式报错,该函数不存在上述代码出现不同的执行结果,是因为函数声明的一个重要特征函数声明提升,意思是函数声明会被提升到顶部,即首先读取函数声明。
函数声明提升
定义函数有两种方式:
函数声明
sayName("123");//123 function sayName(name){ alert(name); }
函数表达式
sayName("123");//报错,该函数不存在 var sayName = function(name){ alert(name); };
上述代码出现不同的执行结果,是因为函数声明的一个重要特征:函数声明提升,意思是函数声明会被提升到顶部,即首先读取函数声明。
与之类似的还有变量声明提升,即将变量的声明提升到顶部。
var sayName = function(){ alert(1); }; function sayName(){ alert(2); } sayName();//?
上述代码等价于:
function sayName(){ //函数声明提升 alert(2); } var sayName;//变量声明提升 sayName = sayName(){ //覆盖函数声明 alert(1); } sayName();//1
注:函数声明提升先于变量声明提升,且不会被变量声明提升所覆盖。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/107086.html
摘要:与执行环境相关的变量对象中有执行环境定义的所有变量和函数作用域链代码在一个环境中执行,便会创建变量对象的一个作用域链。 执行环境 执行环境是什么? javascript的解释器每次开始执行一个函数时,都会为每个函数创建一个执行环境(execution context)。 执行环境定义了变量或者函数有权访问的其他数据,决定了他们各自的行为。 与执行环境相关的变量对象(...
摘要:高程读书笔记第五章类型创建实例的方式有两种。第一种是使用操作符后跟构造函数,另一种方式是使用对象字面量表示法。 JS高程读书笔记--第五章 Object类型 创建Object实例的方式有两种。第一种是使用new操作符后跟Object构造函数,另一种方式是使用对象字面量表示法。 在通过对象字面量定义对象时,实际上不会调用Object构造函数 访问对象属性时可以使用点表示法和方括号表示法。...
摘要:高程读书笔记第三章语法中的一切变量函数名和操作符都区分大小写。建议无论在任何情况下都指定基数函数与函数类似。返回对象的字符串数值或布尔值表示。 JS高程读书笔记--第三章 语法 ECMAScript中的一切(变量、函数名和操作符)都区分大小写。 不能把关键字、保留字、true、false和null用做标识符。 严格模式是为JavaScript定义了一种不同的解析与执行模型。在严格模式...
摘要:的理解函数与其他语言函数最大的不同在于,其不介意传入多少参数以及参数的类型比如函数的形参有两个,但是调用函数传入的参数可以写一个,三个或不写参数对应等,解析器都可以正常解析,这是因为中参数在内部是以一个数组形式来表示,故而不需要关系传入参数 ECMAScript function的理解 ECMAScript 函数与其他语言函数最大的不同在于,其不介意传入多少参数以及参数的类型...
摘要:假如你只想支持及更高版本那么大可丢掉前面定义的那个函数而只用原生的实现。跳过这个函数中新增的代码首先检测原生对象是否存在如果存在则返回它的新实例。如果原生对象不存在则检测对象。如果这两种对象都不存在就抛出一个错误。 XMLHttpRequest 对象 IE7+、Firefox、Opera、Chrome 和 Safari 都支持原生的 XHR 对象,在这些浏览器中创建 XHR 对象要像下...
阅读 944·2023-04-25 15:42
阅读 3563·2021-11-02 14:38
阅读 2872·2021-09-30 09:48
阅读 1391·2021-09-23 11:22
阅读 3361·2021-09-06 15:02
阅读 3173·2021-09-04 16:41
阅读 590·2021-09-02 15:41
阅读 1992·2021-08-26 14:13