JavaScript笔记——函数、变量的提升
来源:互联网 发布:java io read write 编辑:程序博客网 时间:2024/06/05 16:06
我们都习惯程序从顶往下执行,但是有些时候,看着 JavaScript 中有些程序,变量或者声明放在后面,然而调用这些变量却放在声明之前。程序也能执行成功,不仅让我怀疑“先定义,再调用”这定理!!!这是怎么回事呢?查阅一些博客与解答后,才知道 JavaScript 解析器其实比较聪明,它能帮我们自动提升变量或者函数声明,具体的一些说明,整理如下:
- JavaScript 会将函数声明和变量声明提升到当前作用域的顶部
- 变量赋值不会提升
- 函数表达式不会提升,因为它们涉及变量赋值,只有变量声明会提升。在解析器在脚本中到达该表达式之前,函数表达式不会加载。
通过例子来说明吧!
下面这个例子,能说明文章开头的第一,第二点。
这里强调的是定义,而不是初始化,看一下下面这个例子:
// Outputs: undefinedconsole.log(declaredLater);var declaredLater = "Now it's defined!";//Outputs: "Now it's defined!"console.log(declaredLater);
基本上,JavaScript解释器找到所有的变量声明提升到顶部。这意味着上面的例子相当于:
var declaredLater;// Outputs: undefinedconsole.log(declaredLater);declaredLater = "Now it's defined!";// Outputs: "Now it's defined!"console.log(declaredLater);
下面我们来看看,这个能说明第三点的例子:
// Outputs: "Definition hoisted!"definitionHoisted();// TypeError: undefined is not a functiondefinitionNotHoisted();function definitionHoisted() { console.log("Definition hoisted!");}var definitionNotHoisted = function () { console.log("Definition not hoisted!");};
可以看出来,被提升的只是函数,函数表达式并没有被提升。
我习惯先用变量或函数要:先初始化,再使用。虽然了解 JavaScript 有提升的作用,我觉得这样能增加程序的可读性,也给他人提供方便。
大家如果发现有何处是错误的,请留言告诉我,告诉我我有多傻。我会很高兴的纠正任何一个错误。祝你好运!
1 0
- JavaScript笔记——函数、变量的提升
- JavaScript—变量提升、函数提升
- JavaScript—变量提升
- javascript 变量/函数 提升
- JavaScript——变量提升
- javaScript的变量提升
- JavaScript难点——变量提升和函数提升(一)
- JavaScript难点——变量提升和函数提升(二)
- JavaScript难点——变量提升和函数提升(三)
- JavaScript变量提升和函数提升
- javascript中的变量提升和函数提升
- 浅谈JavaScript变量提升与函数提升
- JavaScript:变量提升和函数提升
- javascript变量提升和函数提升
- javascript编译器的一些原理——变量提升
- javascript的变量声明和函数声明提升
- javascript的变量声明和函数声明提升
- 关于javascript变量声明、函数声明提升的问题
- Stealing Harry Potter's Precious hdu 4771 (搜索)
- B/S架构框架搭建
- AdapterView的OnItemLongClickListener
- 进程探寻之内存分布
- C# winfrom拼图游戏
- JavaScript笔记——函数、变量的提升
- windows 环境安装redis
- SpringMVC入门
- C语言学习
- JavaScript学习笔记39-用JavaScript写Selenium脚本
- 细水翻起半点波涛--4月英语
- java程序中的进制(进制的特点)
- 欢迎使用CSDN-markdown编辑器
- SpringMVC核心分发器DispatcherServlet分析