资讯专栏INFORMATION COLUMN

js函数参数的追踪者--arguments

khlbat / 2265人阅读

摘要:在函数中常常会使用这个鬼来在跟踪当前函数的参数传递情况今天就来分析一下是如何来跟踪参数的实例这种情况下没有实参的传递参数与没有建立联系两者相互独立的还需要说明一点在没有定义的情况下认为是全局变量可是并不是我们想象的那样实际上在定义形参时函数

在函数中,常常会使用arguments[]这个鬼来在跟踪当前函数的参数传递情况,今天就来分析一下arguments[]是如何来跟踪参数的

实例1
function fn(x){
   x = 10;
   arguments[0] = 20;
   console.log(x,arguments[0]); //x = 10; arguments[0] = 20;
}
 fn();
 console.log(window.x);// undefined
 console.log(x);// x is not defined

这种情况下,没有实参的传递,参数与arguments没有建立联系,两者相互独立的.
还需要说明一点: x = 10,在没有var定义的情况下,认为是全局变量,可是并不是我们想象的那样. 实际上 在定义形参时,函数内部就声明了一个变量,var x在函数内部声明.

实例2
 function fn(x){
        arguments[0] = 20;
        console.log(x,arguments[0])
    }
    fn();
    // undefined  和 20

这种情况下,也是没有传递实参,函数内只有var x声明,但是并没有赋值,所以x就是undefined,参数和arguments也没有建立联系.

实例3
function fn(x){
        x = 10;                      
        arguments[0] = 20;
        console.log(x,arguments[0]); // 20 20
    }
    fn(1);

实参传入,此时,参数和arguments建立联系,arguments[0]x的值覆盖掉.

实例4
    function fn(x){
        arguments[0] = 20;
        console.log(x,arguments[0]) //20 20
    }
    fn(1);

实参传入,与实例3相同,参数和arguments建立联系,arguments[0]x的值覆盖掉.

总结

实参,影响着arguments[]与参数之间的联系,

严格模式下,arguments不再追踪参数的变化

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

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

相关文章

  • JavaScript函数(arguments,this)理解

    摘要:除语法不同外,两者的区别在于解析器读取的顺序。解析器会事先读取函数声明,即使你把函数声明放在代码的末端也没关系。修改对象将可能导致命名参数失去意义。其实除允许匿名函数递归调用自身外,并没有什么太大用处。 javaScript因为其语法松散,导致函数(尤其是this)看似简单,其实里面花头很多。本篇介绍一下JavaScript函数及其调用方法。• 函数声明和函数表达式• ar...

    seanHai 评论0 收藏0
  • 从use strict看JS(二):函数传参模式与arguments

    摘要:系列系列列表从看一与箭头函数从看二函数传参模式与的上一篇说到,对做了以下限定。是另外一个变量,指向不同的值,而这两个值有相同的类型。函数中,和指向同一个值,更改的就等于更改了的。可以用改进问题是这个在严格模式下不能运行。 系列 系列列表:从use strict看JS(一):this与箭头函数从use strict看JS(二):函数传参模式与arguments use strict 的 ...

    kycool 评论0 收藏0
  • 学学AOP之装饰模式

    摘要:但是,这样做的后果就是,我们会不断的改变本体,就像把凤姐送去做整形手术一样。在中,我们叫做引用装饰。所以,这里引入的装饰模式装饰亲切,熟悉,完美。实例讲解装饰上面那个例子,只能算是装饰模式的一个不起眼的角落。 装饰者,英文名叫decorator. 所谓的装饰,从字面可以很容易的理解出,就是给 土肥圆,化个妆,华丽的转身为白富美,但本体还是土肥圆。 说人话.咳咳~ 在js里面一切都是对...

    nihao 评论0 收藏0
  • 翻译连载 |《你不知道JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 2 章:函

    摘要:从某些方面来讲,这章回顾的函数知识并不是针对函数式编程者,非函数式编程者同样需要了解。什么是函数针对函数式编程,很自然而然的我会想到从函数开始。如果你计划使用函数式编程,你应该尽可能多地使用函数,而不是程序。指的是一个函数声明的形参数量。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson - 《You-Dont-Know-JS》作者 关于译者:...

    Riddler 评论0 收藏0
  • 从一道面试题,到“我可能看了假源码”

    摘要:返回的绑定函数也能使用操作符创建对象这种行为就像把原函数当成构造器。同时,将第一个参数以外的其他参数,作为提供给原函数的预设参数,这也是基本的颗粒化基础。 今天想谈谈一道前端面试题,我做面试官的时候经常喜欢用它来考察面试者的基础是否扎实,以及逻辑、思维能力和临场表现,题目是:模拟实现ES5中原生bind函数。也许这道题目已经不再新鲜,部分读者也会有思路来解答。社区上关于原生bind的研...

    Carson 评论0 收藏0

发表评论

0条评论

khlbat

|高级讲师

TA的文章

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