函數小知識點

函數的五種聲明體式格局

要領一:簽字函數

function f(parameter){
    return undefined
}

函數都邑有一個返回值,不寫,默許返回undefined。由於一個函數必需要有一個停止的語句
注重:consol.log()永久返回undefined,它打印什麼和返回的沒啥關聯。

var a = 1,2        //報錯
var a = (1,2)    //a 的值為 2
var a = console.log(1);        //a 的值是 undefined
var a = (1, console.log(2))        //a 的值是 undefined

要領二:簽字函數給一個參數

var x = function f(parameter){
    return undefined
}

區分:
要領一:可在全局接見函數f

consol.log(f);     // f(parameter){ return undefined }

要領二:只能在函數內部接見f,在函數外部無法接見。

consol.log(f);     // 報錯

要領三:匿名函數

var f = function(parameter){};

匿名函數必需給一個變量

要領四:window.Function函數對象

new Funciton('x','y','return x+y')

要領五:箭頭函數

f = (x,y) => {return x+y;}

箭頭函數是匿名的,只能用變量去存儲。
假如只要一句語句,花括號和return能夠一同去掉;
假如只要一個變量,可省略圓括號。

函數的name屬性

函數有一個屬性————name

function f1(){}
f1.name;            //f,字符串

var f2 = function (){};
f2.name;            //f2,字符串

var f3 = function f4(){};
f3.name;            //f4,字符串

new Function('x','y','return x+y');
f3.name;            //anonymous,字符串

函數的實質

函數是一段能夠重複挪用的代碼塊。

f(1,2) === f.call(undefined,1,2)

f.call()才是函數的真正挪用,模仿下call()的內部。

var f = {};
f.name = 'f';
f.params = ['x','y'];
f.functionBody = 'console.log("fff")'
f.call = function(){
    return eval(f.functionBody);
};
f.call();        //fff

thisargument

f.call(undefined,1,2);        //undefined就是this,[1,2]就是argument

call的第一個參數能夠用this獲得
call的第二個參數能夠用argument獲得

function f(){
    console.log(this);    //this 是參數 1
}
f.call(1);        //Number 對象 1
function f(){
    'use strict';    //嚴厲形式
    console.log(this);        //this 是參數 1
}
f.call(1);        //1,嚴厲形式形式下參數是啥就打印啥
function f(){
    console.log(this);    //this 是參數 undefined,沒有就是 undefined
}
f.call();        //window,不是字符串;嚴厲形式下會打印 undefined
    原文作者:UCCs
    原文地址: https://segmentfault.com/a/1190000014855391
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞