`
highfly-s
  • 浏览: 100871 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript 表达式函数、声明函数的区别,及其执行顺序

阅读更多

今天闲来之际,做了一个小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 函数表达式和函数声明的区别

    javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,...

    javascript正则表达式函数用法详解

    javascript正则表达式函数用法详解

    浅析javascript中函数声明和函数表达式的区别

    JavaScript是Web开发中不可或缺的一部分,它提供了两种声明函数的方式:函数声明式和函数表达式。这两者虽然看似相似,但存在显著的区别。 1. **函数声明式**:这是JavaScript中最直接的函数定义方式,通常以`...

    浅析函数声明和函数表达式-函数声明的声明提前_.docx

    【函数声明与函数表达式】在JavaScript中,函数是第一类对象,这意味着它们可以作为值进行传递和存储。本文将重点讨论两种常见的函数定义方式:函数声明和函数表达式,特别是函数声明的声明提前(Hoisting)现象。 ...

    javascript强制函数自动执行.pdf

    ### JavaScript中的函数声明与函数表达式 在JavaScript中,函数是一种非常重要的编程构造,它可以被定义为函数声明或函数表达式。这两种定义方式各有特点,并且在不同的上下文中有着不同的行为。 #### 函数声明...

    函数声明与函数表达式1

    在这段代码中,尽管`fd()`函数的定义位于`console.log(fd())`之后,但由于声明前置,JavaScript引擎会在执行任何代码之前移动`function fd() {...}`到作用域的顶部,因此`fd()`可以在其声明之前被调用而不会引发错误...

    JavaScript基础篇(6)之函数表达式闭包

    - 函数声明和函数表达式的区别主要在于变量提升的行为。 - 闭包是JavaScript中用于封装和数据持久化的强大工具。 - 函数表达式闭包在使用时需要考虑到变量的作用域和生命周期。 - 在编写代码时要注意避免由于闭包...

    JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同

    在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称),而函数表达式则可以...

    揭秘命名函数表达式

    #### 核心概念与区别:函数表达式 vs 函数声明 在JavaScript的世界里,创建函数的两大方式——**函数表达式**与**函数声明**——构成了语言的核心部分,两者之间微妙的差异往往决定了代码的行为模式与性能表现。 #...

    JavaScript的函数声明与应用

    首先,我们需要理解函数声明的两种基本形式:函数声明(Function Declaration)和函数表达式(Function Expression)。函数声明是最常见的形式,它允许我们在任何地方声明一个函数,如: ```javascript function ...

    javascript中正则表达式及匿名函数相结合的典型应用实例

    javascript中正则表达式及匿名函数相结合的典型应用 通过一个小例子详细说明和介绍了在javascript中如何应用正则表达式,以及在什么时候下可以应用匿名函数。 并介绍了如何将这两种结合在一起。 实例代码简洁清晰,...

    javascript_函数大全

    - **匿名函数**:没有名称的函数,常用于立即执行的表达式或作为参数传递。 - **回调函数**:作为参数传递给另一个函数的函数,用于在特定事件发生时执行。 - **自调用函数**:立即执行的函数,通常用于创建私有作用...

    javascript函数声明和函数表达式区别分析

    console.log('fn函数表达式声明执行..'); }; ``` 在函数表达式中,函数可以没有名称,如果有的话,则通常作为函数内部的一个局部变量使用。函数表达式的特点是,函数只有在表达式被执行时(即运行到赋值语句时),...

    JavaScript中的函数声明和函数表达式区别浅析

    当初只知道两种声明方式一个是函数声明一个是函数表达式,具体有什么不同没能说得很好。最近正好看到这方面的书籍,就想好好总结一番。  在ECMAScript中,有两个最常用的创建函数对象的方法,即使用函数表达式或者...

    JavaScript中的函数申明、函数表达式、箭头函数

    上面的例子展示了这种差异,通过比较函数声明和表达式的执行顺序,我们可以理解它们的区别。 3. **箭头函数** 箭头函数是ES6引入的新特性,它提供了一种简洁的函数定义方式,如`const getName = () => {...}`。...

    JavaScript程序设计-Javascript中的函数的声明.pdf

    JavaScript是一种广泛用于Web开发的动态编程语言,它提供...同时,函数表达式为动态创建和使用函数提供了便利,但需要注意其调用方式和执行顺序的特性。理解这些知识点对于编写高效、可维护的JavaScript代码至关重要。

Global site tag (gtag.js) - Google Analytics