arguments 是函数运行时的实参列表(对象),每个函数都有自己的 arguments,但不往外层函数寻找 arguments 的相关属性,即不行成链(只有 OA 形成作用域链)。

例1

<script>
(function(d, e, f){
console.log(arguments);
console.log(typeof arguments);
})('javascript','programming','!');
</script>

console 中输出

["javascript", "programming", "!"]
object

例2 arguments 收集了所有的实参,即使没有相对应的形参

<script>
(function(d, e, f){
console.log(arguments);
})('javascript','programming','!','node');
</script>

console 中输出

 ["javascript", "programming", "!", "node"]

当一个函数运行的时候,函数内部能引用的变量有 ① AO ② arguments ③ this

例3 形参与对应的 arguments 单元是相互映射的

<script>
(function(d, e, f){
console.log(arguments[0]);
arguments[0] = 'backbone';
console.log(d);
})('javascript','programming','!','node');
</script>

console 中输出

javascript
backbone

例4 arguments 在函数运行时获取实参的个数

<script>
(function(d, e, f){
console.log(arguments.length);
})('javascript','programming','!');
</script>

console 中输出:3

【arguments.callee 属性】当前运行的函数

例5

<script>
(function(d, e, f){
console.log(arguments.callee);
})('javascript','programming','!');
</script>

console 输出:

 function (d, e, f){
console.log(arguments.callee);
}

例6

使用递归求和

<script>
function t(n){
if(n<=1){
return n;
}else{
return n + t(n-1);
}
}
console.log(t(100));
</script>

输出:5050

现在使用匿名函数完成递归

<script>
console.log(
(function (n){
if(n<=1){
return n;
}else{
return n + arguments.callee(n-1);
}
})(100)
);
</script>

输出:5050

Javascript 笔记与总结(1-3)arguments的更多相关文章

  1. [Effective JavaScript 笔记]第3章:使用函数--个人总结

    前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...

  2. [Effective JavaScript 笔记] 第4条:原始类型优于封闭对象

    js有5种原始值类型:布尔值.数字.字符串.null和undefined. 用typeof检测一下: typeof true; //"boolean" typeof 2; //&q ...

  3. [Effective JavaScript 笔记] 第5条:避免对混合类型使用==运算符

    “1.0e0”=={valueOf:function(){return true;}} 是值是多少? 这两个完全不同的值使用==运算符是相等的.为什么呢?请看<[Effective JavaSc ...

  4. [Effective JavaScript 笔记]第27条:使用闭包而不是字符串来封装代码

    函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行.这使得富有表现力的高阶函数抽象如map和forEach成为可能.它也是js异步I/O方法的核心.与此同时,也可以将代码表示为字符串的形式 ...

  5. [Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法

    js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+ ...

  6. 从头开始学JavaScript 笔记(一)——基础中的基础

    原文:从头开始学JavaScript 笔记(一)--基础中的基础 概要:javascript的组成. 各个组成部分的作用 . 一.javascript的组成   javascript   ECMASc ...

  7. 【原】javascript笔记之Array方法forEach&map&filter&some&every&reduce&reduceRight

    做前端有多年了,看过不少技术文章,学了新的技术,但更新迭代快的大前端,庞大的知识库,很多学过就忘记了,特别在项目紧急的条件下,哪怕心中隐隐约约有学过一个方法,但会下意识的使用旧的方法去解决,多年前ES ...

  8. JavaScript笔记目录

    JavaScript笔记目录 一.JavaScript简介 二.在HTML中使用JavaScript ...持续更新中,敬请期待

  9. 蛋糕仙人的javascript笔记

    蛋糕仙人的javascript笔记:https://www.w3cschool.cn/kesyi/kesyi-nqej24rv.html

  10. JavaScript笔记(第一章,第二章)

    JavaScript笔记(第一章,第二章) 第一章: <meta http-equiv="Content-Type" content="text/html; cha ...

随机推荐

  1. Nginx+Keepalived主从双机热备+自动切换

    1 安装配置nginx 参考: http://www.cnblogs.com/jager/p/4388202.html 2 安装配置keepalived tar xvf keepalived-1.2. ...

  2. Linux 中文乱码问题

    弄了好久还是乱码 最终方法:进入 vim /etc/vimrc中 原先只有一个 set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936改成: let ...

  3. poj 3928 树状数组

    题目中只n个人,每个人有一个ID和一个技能值,一场比赛需要两个选手和一个裁判,只有当裁判的ID和技能值都在两个选手之间的时候才能进行一场比赛,现在问一共能组织多少场比赛. 由于排完序之后,先插入的一定 ...

  4. ==与equals()的区别

    /** * Object类的equals()的声明规则: * public Boolean equals(Object obj) * * Object类的equals()方法比较规则: * 当参数ob ...

  5. Spring的meta标签

    Spring的解析源码 public void parseMetaElements(Element ele, BeanMetadataAttributeAccessor attributeAccess ...

  6. http://blog.csdn.net/jun55xiu/article/details/43051627

    http://blog.csdn.net/jun55xiu/article/details/43051627

  7. python 代码片段15

    #coding=utf-8 ''' 如果运行时发生异常的话,解释器会查找相应的处理函数.要是在当前函数里没有 找到的话,它会将异常传递给上层的调用函数,看看那里能不能处理.如果在在最 外层还没有找到的 ...

  8. BZOJ3075 : [Usaco2013]Necklace

    首先对b串做kmp求出nxt数组. 设f[i][j]表示考虑了a的前i个字符,在b中匹配到了j的最长长度,按照kmp算法直接转移即可. $ans=n-\max(f[n][j])$. 时间复杂度$O(n ...

  9. POJ 3686 & 拆点&KM

    题意: 有n个订单,m个工厂,第i个订单在第j个工厂生产的时间为t[i][j],一个工厂可以生产多个订单,但一次只能生产一个订单,也就是说如果先生产a订单,那么b订单要等到a生产完以后再生产,问n个订 ...

  10. 转:10条建议让你创建更好的jQuery插件

    在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了.使 ...