JS 参数 DAY62

参数

函式包含哪些参数??

var globalVariable = '全域变数';var obj = {    fn: function(item){        var localVariable = '区域变数';        console.log(item , localVariable , arguments , this , globalVariable);    }}obj.fn('一段描述', 1 , 2);// arguments : 无论传多少参数 都可以接收 (为一个 "类阵列" )

这时候一定会有人纳闷
那参数是否会被提升(hoisting) 覆盖呢??
我们可以看一下例子(拆成2部分)

function fn(a){    console.log(a);    var a; // 宣告无效,因为参数就等同宣告一个变数,故会被忽略当作不存在    console.log(a);    a = '杰伦';    console.log(a); // 若要修改a 必须重新赋予值 }fn('小明');
function fn(a){    console.log(a);    function a(){}     var a;     console.log(a);    a = '杰伦';    console.log(a); }fn('小明');

(拆解上图)

function fn(a){    // 创造阶段    function a(){} // 会提升到最前方  "但不会比传入的参数更前方"    var a; //  宣告无效,因为参数就等同宣告一个变数,故会被忽略当作不存在        // 执行阶段    console.log(a);    console.log(a);    a = '杰伦';    console.log(a); }fn('小明');

所以这里我们得知 参数绝对不会被提升效果覆盖


传入的参数若是物件,一样会维持传参考特性

function fn(item){    item.home = '大明家';}var family = {    home: '小明家'}fn(family);console.log(family); //  { home : '大明家'}

传入的参数为函式

function functionB(fn){    fn('小明');}functionB(function(a){    console.log(a);})

http://img2.58codes.com/2024/20123039l9kbIJ3JrE.jpg

// 我们也可以把函式预先定义好 callback functionfunction fn2(name,i){    console.log(name, i);}function functionB(fn){    fn('小明', 1);}functionB(fn2); // 透过函式表达式传入

arguments 类阵列
并没有绝大多数阵列可使用的方法
如 forEach

function fn(item){    console.log(item,arguments);}fn(1,2,3,'4')

那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷http://img2.58codes.com/2024/emoticon41.gif


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章