在Javascript中,函数及变量的声明都将被提升到函数的最顶部。
声明函数是将函数的声明以及定义都提升,函数表达式和变量表达式只是将函数或者变量的声明提升到函数顶部,而函数表达式和变量的初始化将不被提升,如果不弄清楚这个问题,很可能给您带来麻烦。
举例说明:
<html>
<head>
<title>函数提升</title>
<script language="javascript" type="text/javascript">
//在全局对象中声明两个全局函数,反模式
function foo()
{
alert("global foo");
}
function bar()
{
alert("global bar");
}
//定义全局变量
var v = "global var";
function hoistMe()
{
alert(typeof foo); //function
alert(typeof bar); //undefined
alert(v); //undefined
//为什么bar函数和变量v是未定义而不是全局变量中定义的相应的函数变量呢?
//因为函数里面定义了同名的函数和变量,无论在函数的任何位置定义这些函数和
//和变量,它们都将被提升到函数的最顶部。
foo(); //local foo
bar(); //报错,缺少对象
//函数声明,变量foo以及其实现被提升到hoistMe函数顶部
function foo()
{
alert("local foo");
}
//函数表达式,仅变量bar被提升到函数顶部,实现没有被提升
var bar = function()
{
alert("local bar");
};
//定义局部变量
var v = "local";
}
(function()
{
hoistMe();
})();
//函数表达式和变量表达式只是其声明被提升,函数声明是函数的声明和实现都被提升。
/**由于函数提升的效果,hoistMe方法相当于
function hoistMe()
{
//函数声明,变量foo以及其实现被提升到hoistMe函数顶部
function foo()
{
alert("local foo");
}
//函数表达式,仅变量bar被提升到函数顶部,实现没有被提升(同变量提升)
var bar = undefined;
//变量声明被提升
var v = undefined;
alert(typeof foo); //function
alert(typeof bar); //undefined
foo(); //local foo
bar(); //报错,缺少对象
bar = function()
{
alert("local bar");
};
v = "local";
}
*/
</script>
</head>
<body>
</body>
</html>
分享到:
相关推荐
### JavaScript函数...掌握JavaScript函数的不同使用方式和高级特性,对于提升编程技能和编写高效、可维护的代码至关重要。通过实践和深入理解,开发者可以充分利用函数的力量,构建出更加健壮和灵活的Web应用程序。
不过,由于【标题】中提供了文档的名称——"JavaScript函数式编程.pdf",我可以根据这个名称扩展出关于JavaScript函数式编程的知识点。 JavaScript函数式编程的知识点非常丰富,涉及很多方面的内容,下面将详细介绍...
而《JavaScript函数式.zip》可能是一份关于JavaScript函数式编程的资料集合,函数式编程是一种编程范式,强调使用函数和避免改变状态。其中可能涵盖以下知识点: 1. **纯函数**:理解纯函数的定义,即给定相同的...
在JavaScript中,函数是第一类对象,这意味着它们可以赋值给变量、作为参数传递给其他函数,也可以作为其他函数的返回值。这是函数式编程的基础,因为它允许我们用函数来构建更复杂的函数。 二、纯函数 纯函数是只...
JavaScript中的变量提升(Variable Hoisting)和函数提升(Function Hoisting)是理解JavaScript执行机制的关键概念,它们在JavaScript代码解析和执行过程中起着至关重要的作用。本文将详细讲解这两个概念,帮助...
在ES6中,引入了`let`和`const`两个新的关键字,用于声明块级作用域的变量,它们的使用更加严格,不允许变量提升,并且在同一作用域内不允许重复声明,这为JavaScript带来了更多的灵活性和更好的管理变量的能力。...
在JavaScript中,函数是一种非常重要的编程构造,它可以被定义为函数声明或函数表达式。这两种定义方式各有特点,并且在不同的上下文中有着不同的行为。 #### 函数声明(Function Declaration) 函数声明是定义一...
函数堆栈则描述了函数调用时的顺序和结构,而变量提升则是 JavaScript 中的一个特殊机制,它允许变量和函数声明在实际代码执行之前被移动到它们所在作用域的顶部。 执行上下文(Execution Context)可以分为三种...
JavaScript中的变量提升(Variable Hoisting)和函数提升(Function Hoisting)是理解JS代码执行机制的关键概念。在JS中,作用域分为全局作用域和函数作用域,而在ES6引入了块级作用域(例如使用`let`和`const`声明...
这两个关键字的使用有助于避免变量提升(Hoisting)的问题,以及在块级作用域中管理变量。 函数默认参数是另一个重要的ES6特性,它允许你在函数定义时为参数提供默认值,如 `function foo(param = defaultValue) {....
JavaScript函数是编程语言的核心组成部分,尤其在Web开发中起着至关重要的作用。这份"JavaScript函数速查手册"涵盖了JavaScript函数的各个方面,旨在帮助开发者快速查找和理解各种函数的用法和特性。 一、函数基础 ...
以下是关于JavaScript函数的详细讲解: 1. **函数定义**: - 无参函数定义:`function 函数名 () { 代码... }` - 有参函数定义:`function 函数名 (参数列表) { 代码... }` - 参数列表中的参数可以是变量、常量...
JavaScript中的变量提升(Variable Hoisting)和函数提升(Function Hoisting)是JavaScript解析器在代码执行前进行预解析阶段的两个重要概念。预解析的主要目的是为了检查语法错误并优化代码执行效率。在这个过程中...
在JavaScript中,变量和函数的声明会被提升到其所在作用域的顶部,但要注意的是,提升只涉及到声明,而不包括赋值或定义。 首先,我们来看**变量提升**。在JavaScript中,使用`var`声明的变量会经历所谓的...
**JavaScript函数查询CHM文件:** `JavaScript参考手册.chm` 是一个帮助文件,包含JavaScript的所有函数和对象的详细信息。CHM(Compiled HTML Help)是一种Microsoft提供的帮助文件格式,将HTML页面编译成单一文件...
9. **变量提升(Hoisting)**:在JavaScript中,变量和函数声明会被提升到它们所在作用域的顶部,但赋值操作不会被提升。 10. **函数表达式**:函数可以作为值存在,可以赋值给变量,也可以作为其他函数的参数或...
在JavaScript中,函数作用域允许在函数内部定义的变量只能在函数内部访问,外部是无法访问的。作用域的创建发生在函数定义时,而不是函数调用时。JavaScript采用词法作用域(lexical scoping),意味着函数的作用域...
JavaScript中的变量提升(Hoisting)和函数提升是语言特性中的关键概念,它们与JavaScript的预编译过程紧密相关。在JavaScript执行环境中,代码首先会经历一个预处理阶段,这个阶段里,变量声明(`var`,`let`,`...
在JavaScript中,函数既是数据类型,也是第一级公民,这意味着它们可以被赋值给变量、作为参数传递以及作为其他函数的返回值。 1. 函数的定义方式 - **定义式**:这是最常见的函数定义方式,通过`function`关键字...
这种方法称为函数变量定义。例如: ```javascript var add = new Function('a', 'b', 'return a + b'); ``` 这里,`add`是函数变量名,`'a'`和`'b'`是参数,`'return a + b'`是函数体。 5. **注意事项** - ...