【Day23】参数

参数

首先我们先看一个范例

function fn(para){
    console.log(para, arguments);
};

fn('weiwei', 2, 3);

范例中我们设立一个参数 para,当我们传入三个参数时,

只会接收到第一个传入的参数 weiwei

arguments 会将传入的参数全部接收,

会形成一个 arguments 的类阵列,

我们将内容点开後,能发现它的结构跟阵列很像

函式内的变数

当我们在函式中宣告一个变数名称和参数名称相同时会如何呢?

function fn(a){
    console.log(a);
    
    var a;
    
    console.log(a);
    
    a = 'weiwei';
    
    console.log(a);
};

fn('ming');

我们能看见参数 a 只有最後一个回传 weiwei

在函式中我们宣告的变数名称和参数一样时,

因为变数 a 已经存在,因此 var a 会无效,所以第二个 a 会回传 ming

而第三个 a 的结果为 weiwei 的原因是因为在 a = 'weiwei' 时,

a 的值已经被修改成 weiwei 了,

因此结果才会回传 weiwei

函式内的函式

当我们在函式中宣告一个函式名称和参数名称相同时会如何呢?

function fn(a){
    console.log(a);
    
    function a() {};
    
    console.log(a);
    
    a = 'weiwei';
    
    console.log(a);
};

fn('ming');

此时前两个 afunction,第三个为 weiwei

这表示 a() 会因提升(hoisting)效果跑到最前端,

因此可以得知在函式中的 a() 执行时,会在参数传入之後才进行,

传入参数

function callMe(d, c, b, a) {
    console.log(d, c, b, a);
};

callMe('a', 'b', 'c');

该范例可以了解到参数的名称可以自己定义,

而参数的名称与传入的值没有任何关系

callback function

callback function 是将函式当成参数给另一个函式使用

function fnA(name, a) {
    console.log(`${name}你好${a}`);
};

function fnB(fn) {
    fn('weiwei', '阿');
};

fnB(fnA);

在执行 fnB(fnA) 时,我们会先将 fnA 的参数设定在 fnB 函式内,

而此时 fnA 这个函式会在 fnB 中执行


<<:  【第8天】训练模型-CNN与训练方向

>>:  AVFoundation 来看看 Day 19

[Day 27] 建立注册的画面及功能(十一) - Gmail设定(二)

今天要分享的是G-mail寄信的另外一种方式, 虽然比较麻烦, 但是比较安全. 解除人机验证锁定 进...

Day5 process 的生命周期

前言 昨天讲了process 怎麽来的,今天来讲讲process 的生命周期。 process 的生...

【Day26】建立一个 Bing Search Bot

今天我们要来实作一个 Bing Search Chatbot。 建立一些档案 在 requireme...

Day 3 - 配置环境

大家好,今天来教大家如何配置文件。 首先 首先,先确认您已经将系统更新到Big Sur以上(避免出现...

食谱搜寻系统未来展望

小白食谱搜寻系统缺点 (要说缺点真的是一大堆) 属性不足 : 最大的缺点就是在食材、调味料和做法的栏...