美文网首页
进阶篇:JS函数 (5)

进阶篇:JS函数 (5)

作者: 饥人谷1904_陈俊锋 | 来源:发表于2019-05-18 15:08 被阅读0次

饥人谷学习进阶第 5 天

JS函数

函数和作用域

JavaScript函数是指一个特定代码块,可能包含多条语句,可以通过名字来供其它语句调用以执行函数包含的代码语句。

调用函数通过 函数名称() 的形式调用

声明函数:


function 函数名() {
    statement;
}

函数表达式:


var 函数名 = function() {
    statement;
}

参数:


形参 实参

函数定义时可以写多个参数

arguments:


在函数内部,你可以使用 arguments 对象获取到该函数的所有传入参数

arguments[0] 第一个参数

重载


重载是很多面向对象语言实现多态的手段之一,在静态语言中确定一个函数的手段是靠方法签名——函数名+参数列表,也就是说相同名字的函数参数个数不同或者顺序不同都被认为是不同的函数,称为函数重载

在JavaScript中没有函数重载的概念,函数通过名字确定唯一性,参数不同也被认为是相同的函数,后面的覆盖前面的,但这不意味着JavaScript不能通过重载功能实现一个函数

在JavaScript中,函数调用没必要把所有参数都传入,只要你函数体内做好处理就行,但前提是传的参数永远被当做前几个

function printPeopleInfo(name, age, sex){
    if(name){
        console.log(name);
    }

    if(age){
        console.log(age);
    }

    if(sex){
        console.log(sex);
    }
}

返回值


函数执行后反馈一个结果可以用 return 来实现

调用return后,函数立即中断并返回结果,即使后面还有语句也不再执行

其实我们不写return语句,函数也会默认给我们返回 undefined

函数的声明前置


和变量的声明会前置一样,函数声明同样会前置,如果我们使用函数表达式那么规则和变量一样

  • 如果我们使用函数声明的方式,那么即使函数写在最后也可以在前面语句调用
fn() // "1"

function fn(){
    console.log('1')
}
  • 函数表达式只能在后面才能运用这个函数
console.log(fn) //undefined

var fn = function() {}
*********
相当于下面
*********
var fn //变量的提升

console.log(fn)
fn = function() {}

函数立刻执行


(function(){}) ()

立刻执行表达式:借用函数的局部作用域,实现作用域的隔离

命名冲突


当在同一个作用域内定义了名字相同的变量和方法的话,会根据前置顺序产生覆盖

var fn = 3;
function fn(){}

console.log(fn); // 3
*****
相当于
*****
var fn
function fn(){}  //覆盖上面的

fn = 3  //重新赋值
console.log(fn)

当函数执行有命名冲突的时候,可以认为在还是内部一开始有隐藏的声明变量这个操作

function fn(fn){
  
  console.log(fn);

  var fn = 3;
  console.log(fn);
}
相当于
function fn(){
  var fn = arguments[0]
  console.log(fn);

  var fn = 3;
  console.log(fn);
}

fn(10) 

//上面两个输出都是 10 3

函数的递归


自己调用自己,注意要有结束条件

效率低
算法简单逻辑清晰

作用域


{} 直接写大括号没有作用域

函数外不能使用函数内声明的变量,但是函数内可以使用函数外声明的变量。

相关文章

  • 进阶篇:JS函数 (5)

    饥人谷学习进阶第 5 天 JS函数 函数和作用域 JavaScript函数是指一个特定代码块,可能包含多条语句,可...

  • JS------数组 reduce() 方法详解及高级技巧

    JS进阶篇--JS数组reduce()方法详解及高级技巧

  • JavaScript学习笔记(二)

    慕课网JavaScript进阶篇第1-6章学习笔记,JS基础语法,数组,流程控制语句,函数,事件 JavaScri...

  • 最新web前端相关课程学习链接

    js基础篇 js进阶篇 js高级篇 vue基础篇 vue高级篇 react基础 react高级 Nodejs基础 ...

  • 前端(十三)2

    1.js操作class 2.js中括号操作属性 3.js函数 4.变量和函数预解析 5.匿名函数 7.函数传参 8...

  • JS-12day

    1、js操作style属性 2、js操作属性 3、js函数 4、js换肤 5、js换肤可控制 6、js中括号操作属...

  • 【转】this 的值到底是什么?一次说清楚

    你可能遇到过这样的 JS 面试题: 函数调用首先需要从函数的调用开始讲起。 JS(ES5)里面有三种函数调用形式:...

  • ReactiveCocoa(RAC)

    一、参考 ReactiveCocoa之基础篇 ReactiveCocoa之进阶篇 函数响应式编程 Reactive...

  • JavaScript 05 函数

    js函数的概念和作用,js函数的定义,js函数的调用,js事件驱动的概念,js函数的实参和形参,js的作用域,js...

  • 小记-JavaScript函数

    函数使用 1、 普通方式 2、匿名函数 3、 对象函数 4、 函数的参数 5、返回值只需要return 6、js的...

网友评论

      本文标题:进阶篇:JS函数 (5)

      本文链接:https://www.haomeiwen.com/subject/xubdaqtx.html