今天闲来之际,做了一个小TEST ,主要是看关于命名函数和声明函数 写成类它们之间的 区别。
javascript 函数分为三大类:表达式函数、声明函数、自执行函数(属于匿名函数,在这里不再详以说明)
表达式函数的特性:在作用域中则必须等到解析器执行到它所在的代码行,才会真正被解释执行。如下示例
test1();//会提示 Property 'test' of object [object Object] is not a function
var test1= function(){ return "sucess" ;}
test1();//会返回结果 sucess
声明函数:javaScript 解释器中存在一种变量声明被提升(hoisting)的机制,也就是说变量(函数)的声明会被提升到作用域的最前面,即使写代码的时候是写在最后面,也还是会被提升至最前面。
test(); //返回结果为sucess1
function test(){
return "sucess1";
}
第一种情况:在相同性的声明表达式函数会执行第二个的声明,因为最后一个出现的,要远远高于第一个出现的
test(); //返回结果为sucess2
function test(){
return "sucess1";
}
function test(){
return "sucess2";
}
自执行函数: 和java中的static 函数相似 ,可以自动执行无需触发 在其作用域中的声变量不会和外界受影响,不会存在命名冲突的问题
var vt="welocome you ";
(function () {
var vt="dddd12222";
alert(test); //输出的值为dddd12222
})();
alert(vt); //输出的值为welcome you
第二种情况:表达式相继的在页面上出现,在调用时后出现的会覆盖前面出现的
var aa=function(){return "11"}
var aa=function(){return "22"}
alert(aa);//输出结果为22
第三种情况:表达式函数和声明函数相同名函数同时出现,以照顺序,如果是表达式函数在最前 所有的调用都会使用表达式函数:
var Person = function(name){
this.name=name;
this.write=function(){
alert(this.name+"1");
}
}
var p=new Person('jack');
p.write(); //结果:jack1
function Person(name,age){
this.name=name;
this.age=age;
this.write=function(){
console.log("my name is "+this.name+" ,my age is "+this.age);
}
}
var p2=new Person('wilon',22);
p2.write();//结果为wilon1
debugger;
function Person(name){
this.name=name+"2";
this.write=function(obj){
alert(this.name+obj);
}
}
var p3= new Person('brown');
p3.write(' white'); //结果为brown1
第四种情况:表达式函数在后,引用在前,会调用最后一个声明函数 ,在表达式函数后的引用 ,调用的还是表达式函数
var p=new Person('jack');
p.write(); //结果:jack2
var Person = function(name){
this.name=name;
this.write=function(){
alert(this.name+"1");
}
}
function Person(name,age){
this.name=name;
this.age=age;
this.write=function(){
console.log("my name is "+this.name+" ,my age is "+this.age);
}
}
var p2=new Person('wilon',22);
p2.write();//结果为wilon1
debugger;
function Person(name){
this.name=name+"2";
this.write=function(obj){
alert(this.name+obj);
}
}
var p3= new Person('brown');
p3.write(' white'); //结果为brown1
相关推荐
javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,...
javascript正则表达式函数用法详解
JavaScript是Web开发中不可或缺的一部分,它提供了两种声明函数的方式:函数声明式和函数表达式。这两者虽然看似相似,但存在显著的区别。 1. **函数声明式**:这是JavaScript中最直接的函数定义方式,通常以`...
【函数声明与函数表达式】在JavaScript中,函数是第一类对象,这意味着它们可以作为值进行传递和存储。本文将重点讨论两种常见的函数定义方式:函数声明和函数表达式,特别是函数声明的声明提前(Hoisting)现象。 ...
### JavaScript中的函数声明与函数表达式 在JavaScript中,函数是一种非常重要的编程构造,它可以被定义为函数声明或函数表达式。这两种定义方式各有特点,并且在不同的上下文中有着不同的行为。 #### 函数声明...
在这段代码中,尽管`fd()`函数的定义位于`console.log(fd())`之后,但由于声明前置,JavaScript引擎会在执行任何代码之前移动`function fd() {...}`到作用域的顶部,因此`fd()`可以在其声明之前被调用而不会引发错误...
- 函数声明和函数表达式的区别主要在于变量提升的行为。 - 闭包是JavaScript中用于封装和数据持久化的强大工具。 - 函数表达式闭包在使用时需要考虑到变量的作用域和生命周期。 - 在编写代码时要注意避免由于闭包...
在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称),而函数表达式则可以...
#### 核心概念与区别:函数表达式 vs 函数声明 在JavaScript的世界里,创建函数的两大方式——**函数表达式**与**函数声明**——构成了语言的核心部分,两者之间微妙的差异往往决定了代码的行为模式与性能表现。 #...
首先,我们需要理解函数声明的两种基本形式:函数声明(Function Declaration)和函数表达式(Function Expression)。函数声明是最常见的形式,它允许我们在任何地方声明一个函数,如: ```javascript function ...
javascript中正则表达式及匿名函数相结合的典型应用 通过一个小例子详细说明和介绍了在javascript中如何应用正则表达式,以及在什么时候下可以应用匿名函数。 并介绍了如何将这两种结合在一起。 实例代码简洁清晰,...
- **匿名函数**:没有名称的函数,常用于立即执行的表达式或作为参数传递。 - **回调函数**:作为参数传递给另一个函数的函数,用于在特定事件发生时执行。 - **自调用函数**:立即执行的函数,通常用于创建私有作用...
console.log('fn函数表达式声明执行..'); }; ``` 在函数表达式中,函数可以没有名称,如果有的话,则通常作为函数内部的一个局部变量使用。函数表达式的特点是,函数只有在表达式被执行时(即运行到赋值语句时),...
当初只知道两种声明方式一个是函数声明一个是函数表达式,具体有什么不同没能说得很好。最近正好看到这方面的书籍,就想好好总结一番。 在ECMAScript中,有两个最常用的创建函数对象的方法,即使用函数表达式或者...
上面的例子展示了这种差异,通过比较函数声明和表达式的执行顺序,我们可以理解它们的区别。 3. **箭头函数** 箭头函数是ES6引入的新特性,它提供了一种简洁的函数定义方式,如`const getName = () => {...}`。...
JavaScript是一种广泛用于Web开发的动态编程语言,它提供...同时,函数表达式为动态创建和使用函数提供了便利,但需要注意其调用方式和执行顺序的特性。理解这些知识点对于编写高效、可维护的JavaScript代码至关重要。