资讯专栏INFORMATION COLUMN

js函数学习

JasinYip / 380人阅读

摘要:函数声明静态函数函数声明有个特征就是函数可以函数声明提前函数表达式这种方式命名,没有函数声明提前,这个方式也是自己比较喜欢用的方式。

函数声明(静态函数)

函数声明有个特征就是函数可以函数声明提前

hello();
function hello(){
console.log("hello js");
}
函数表达式(Function expressions)
var hello2 = function(){
 console.log("hello2 js");
}
hello2();

这种方式命名,没有函数声明提前,这个方式也是自己比较喜欢用的方式。

匿名函数( anonymous)
(function(){
    console.log("message");
})()

也可以直接传入变量,jQuery源码用的比较的多,用匿名函数的好处就是可以减少命名的冲突,省的为了只执行一次的函数你还要去命名

(function(e){
    console.log(e);
})(2)

自动执行的其他的写法

var auto = (function(){
     console.log("auto message");
})() 

var auto = (function(){
    console.log("auto message2");
}())
回调函数(callback)

就是把函数当做变量,这个算是js中比较特别的地方,nodejs的异步回调的大体就是那样

function person(callback,name,age){
    callback(name,age);
}
function output(name,age){
    console.log(name+":"+age);
}
new person(output,"zs",18);
递归函数

关于递归,这个平时不敢去太多的应用,当时学习java的时候就很转,也就不为难自己了。简单的说就是自己调用自己:

function add(n){
    if(n<=1){
        return 1;
    }else{
        return n+add(n-1)
    }
}
// var i= add(4);
console.log(add(4));
构造函数

构造函数首字母大写

this用法,指向本身,这个比较复杂,以后总结好了,弄明白了再细说

闭包问题也是比较头痛的问题,留在以后。会造成内存消耗

构造函数的三部曲:

构造方法

定义属性

原型法定义函数,这样比较的节省内存

函数的继承,call,apply(用在传递数组)

函数的继承:

function Person(name,age){
    this.name=name;
    this.age=age;
}

Person.prototype.out=function(){
    var self=this;
    console.log(this.name+":"+this.age);
}

function Student(name,age,id){
    // Person.call(this,name,age);
    Person.apply(this,[name,age]);//或是用apply都行
    this.id=id;
}
Student.prototype.output=function(){
    var self=this;
    console.log(this.name+":"+this.age+";"+this.id);
}

new Person("lh",18).out();
new Student("KK",18,"XUESHENG").output();

函数的多态:

函数的重载:

主要是通过argument.length分别调用的,没有怎么用过

function f(x){}
function f(x,y){}
function f(x,y,z){}
总结最优的命名函数方法:

用构造方法生成成员变量,用原型法生成成员方法,减少内存的消耗

function Person(name,age){
    this.name=name;
    this.age=age;
    this.say();
    // 这样也行(构造方法分配成员方法),比较喜欢原型法构造函数
    this.say=function(){
        console.log(name+age);
    }
}
Person.prototype.say=function(){
    console.log(name+age);
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91509.html

相关文章

  • 【前端语言学习学习minipack源码,了解打包工具的工作原理

    摘要:作者王聪学习目标本质上,是一个现代应用程序的静态模块打包器。为此,我们检查中的每个导入声明。将导入的值推送到依赖项数组中。为此,定义了一个只包含入口模块的数组。当队列为空时,此循环将终止。 作者:王聪 学习目标 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关...

    shery 评论0 收藏0
  • 【前端语言学习学习minipack源码,了解打包工具的工作原理

    摘要:作者王聪学习目标本质上,是一个现代应用程序的静态模块打包器。为此,我们检查中的每个导入声明。将导入的值推送到依赖项数组中。为此,定义了一个只包含入口模块的数组。当队列为空时,此循环将终止。 作者:王聪 学习目标 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关...

    toddmark 评论0 收藏0
  • 初学者学习JAVASCRIPT很吃力怎么办?到底该如何学习JS

    摘要:给初学者的印象总是那么的杂而乱,相信很多初学者都在找轻松学习的途径。通常学了很久的基础之后,变量函数对象你也都略知一二,但一到公司开发项目的时候,却又难以下手。 Js给初学者的印象总是那么的杂而乱,相信很多初学者都在找轻松学习Js的途径。在这里给大家总结一些学习Js的经验,希望能给后来的学习者探索出一条轻松学习Js之路。Js给人那种感觉的原因多半是因为它如下的特点:A:本身知识很抽象、...

    WrBug 评论0 收藏0
  • JS框架 - 收藏集 - 掘金

    摘要:现在回过头总结,才又进一步的揭开了闭包的一层后台管理系统解决方案前端掘金基于系列的后台管理系统解决方案。什么是继承大多数人使用继承不外乎是为了获得基于的单页应用项目模板前端掘金小贴士本项目已升级至。 关于js、jq零碎知识点 - 掘金写在前面: 本文都是我目前学到的一些比较零碎的知识点,也是相对偏一点的知识,这是第二篇。前后可能没有太大的相关性,需要的朋友可以过来参考下,喜欢的可以点个...

    wenyiweb 评论0 收藏0
  • Backbone.js学习笔记(一)

    摘要:它通过数据模型进行键值绑定及事件处理,通过模型集合器提供一套丰富的用于枚举功能,通过视图来进行事件处理及与现有的通过接口进行交互。 本人兼职前端付费技术顾问,如需帮助请加本人微信hawx1993或QQ345823102,非诚勿扰 1.为初学前端而不知道怎么做项目的你指导 2.指导并扎实你的JavaScript基础 3.帮你准备面试并提供相关指导性意见 4.为你的前端之路提供极具建设性的...

    FrancisSoung 评论0 收藏0
  • JavaScript知识架构学习路径(一)- 变量篇

    摘要:在此,我们首先根据变量的作用域,将变量划分为三级,具体是全局变量局部变量和参数变量。 【摘要】本文是专为JavaScript入门者而总结的,总体上将JavaScript的基础部分分成了九大块,分别是变量、运算符、数组、流程控制结构、字符串函数、函数基础、DOM操作基础、文档对象模型DOM和正则表达式。 【关键字】变量、运算符、数组、流程控制结构、函数、DOM、正则表达式。 本篇文章的主...

    toddmark 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<