09 js函数调用过程内存分析、js函数细节

函数的调用过程

Js函数调用过程的内存分析。

一个递归调用的例子:

<html>
<head>
<script>
//abc是一个函数它接收一个数值
function abc(num1){
if (num1>3)
{
    abc(--num1);    //递归
}
document.writeln(num1);
}
abc(5);
</script>
</head>
<body>

</body>
</html>

结果:

分析:

函数深入使用

函数的参数列表可以是多个

参数列表可以是多个,并且数据类型可以是任意类型

js支持参数个数可变的函数

js支持创建动态函数

特别强调一点:

Js 的函数,天然支持可变参数

<html>
<head>
<script>
//编写一个函数,可以接受任意多个数,并计算他们的和
function abc()
{
    //在js中有一个arguments,可以访问所有传入值
    document.writeln("参数的长度是: "+arguments.length);
    document.writeln("<br/>");
    //遍历所有的参数
    for (var i=0;i<arguments.length ; i++)
    {
        document.writeln(arguments[i]);
    }
}

abc(12,34,56,78);

</script>
</head>
<body>

</body>
</html>

运行结果图:

Js不支持重载

编写一个网页输入一个整数打印出对应的金字塔

<html>
<head>
<script>
//编写一个函数,从页面输入一个整数打印对应的金字塔
/*

    *
   ***
  *****
 *******
*********

*/
function pyramid(n)
{
    for (var i=1; i<=n ;i++ )
    {
        for (var j=1; j<=n-i ;j++ )
        {
            document.write("&nbsp");
        } 

        for (var j=1; j<=2*i-1 ;j++ )
        {
            document.write("*");
        }
        document.write("<br/>");
    }
}
var n = window.prompt("请输入值:");
n= parseInt(n);
pyramid(n);

</script>
</head>
<body>

</body>
</html>

输入5:

编写一个函数,从页面输入一个整数(1-9),打印出对应的乘法表

<html>
<head>
<script>
//打印乘法口诀表
function mul(m)
{
    for(var i=1; i<=m; i++ )
    {
        for (var j=1; j<=i;j++ )
        {
            document.write(j+"×"+i+"="+i*j+"&nbsp;");
        }

        document.write("<br/>");
    }
}
var m=window.prompt("请输入数值:");
m=parseInt(m);
mul(m);

</script>
</head>
<body>
</body>
</html>

输入9:

时间: 2024-07-31 05:20:22

09 js函数调用过程内存分析、js函数细节的相关文章

奇舞js笔记——*——过程抽象,高阶函数,面向函数编程

注: 1.学习视频地址 2.ppt地址 3.个人感想: 是我hin厉害的师父推荐我看的月影大大的视频,感觉对于我这个小白来说,真的是一遍又一遍的刷新知识面.我觉得像月影大大这种大佬的思路,我接触之后真的是受益匪浅. 所以我总结出来不仅是自己记笔记,也是想分享给想要成为真正的前端“工程师”的前端er. 真的很珍惜这种知识面被刷新的感觉——越学习,越感到自己无知,共勉. 摘要 1.数据抽象是针对数据处理的: 2.过程抽象(例如高阶函数)是针对函数处理的: 3.用高阶函数可以对已有API的接口进行修改

java 构造方法执行过程内存分析

package Demo; public class BirthDate { private int day; private int month; private int year; public BirthDate(int d, int m, int y) { day = d; month = m; year = y; } } java bean package Demo; public class Demo { public static void main(String[] args)

java执行程序的内存分析系列专栏

近段时间研究了java的程序执行过程中的内存分配,收获颇多,解决了我最近时间学习java的很多困惑点.写java内存分析系列的目的主要有两个,一来是希望给像我一样的java初学者一定的启发,希望也能解决的java关于内存方面的困惑点.二来也是给自己做个总结,毕竟只有自己亲自写出来的东西,才是真正的东西.今天就开始java程序执行过程内存分析系列第一篇. 一. java执行程序时内存的划分 一般来说,作为初学者,一般只是将java程序的内存只是分为栈区,和堆区.确实刚开始学时这样划分能都便于我们理

JS内存泄漏 和Chrome 内存分析工具简介(摘)

原文地址:http://web.jobbole.com/88463/ JavaScript 中 4 种常见的内存泄露陷阱 原文:Sebastián Peyrott 译文:伯乐在线专栏作者 - ARIGATO 链接:http://web.jobbole.com/88463/ 点击 → 了解如何加入专栏作者 了解 JavaScript 的内存泄露和解决方式! 在这篇文章中我们将要探索客户端 JavaScript 代码中常见的一些内存泄漏的情况,并且学习如何使用 Chrome 的开发工具来发现他们.读

js:深入prototype(上:内存分析)

/** * 以下演示了通过原型的创建方式,使用基于原型的创建可以将属性和方法 * 设置为Person专有的,不能通过window来调用. * 原型是javascript中的一个特殊对象,当一个函数创建之后,会随之就产生一个原型对象 * 当通过这个这个函数的构造函数创建了一个具体的对象之后,在这个具体的对象中,就会有一个属性指向原型 */ //第一种状态 function Person(){                        } //第二种状态 Person.prototype.nam

c函数调用过程原理及函数栈帧分析

转载自地址:http://blog.csdn.net/zsy2020314/article/details/9429707       今天突然想分析一下函数在相互调用过程中栈帧的变化,还是想尽量以比较清晰的思路把这一过程描述出来,关于c函数调用原理的理解是很重要的. 1.关于栈 首先必须明确一点也是非常重要的一点,栈是向下生长的,所谓向下生长是指从内存高地址->低地址的路径延伸,那么就很明显了,栈有栈底和栈顶,那么栈顶的地址要比栈底低.对x86体系的CPU而言,其中 ---> 寄存器ebp(

js基础梳理-内存空间

我估计有很多像我这样非计算机专业的人进入到前端之后,总是在写业务代码,思考什么什么效果如何实现,导致很多基础概念型的东西都理解得并不太清楚.经常一碰到群里讨论的些笔试题什么的,总觉得自己像是一个假前端似的,似懂非懂,就算会做也不能清楚的表述为什么会是那样的结果.总是自己安慰自己,反正正常项目很少这么写代码.不知道也没关系,但是时间久了,发现不深刻系统的理解这些东西,工作中经常碰到一些莫名其妙的坑,或者有时候觉得看别人插件的代码,别人究竟是如何一步步实现的? 慢慢的就有了越来越强的想法把这些基础知

js 作用域链&amp;内存回收&amp;变量&amp;闭包

闭包主要涉及到js的几个其他的特性:作用域链,垃圾(内存)回收机制,函数嵌套,等等 一.作用域链:函数在定义的时候创建的,用于寻找使用到的变量的值的一个索引,而他内部的规则是,把函数自身的本地变量放在最前面,把自身的父级函数中的变量放在其次,把再高一级函数中的变量放在更后面,以此类推直至全局对象为止.当函数中需要查询一个变量的值的时候,js解释器会去作用域链去查找,从最前面的本地变量中先找,如果没有找到对应的变量,则到下一级的链上找,一旦找到了变量,则不再继续.如果找到最后也没找到需要的变量,则

分析js框架如何实现JSONP之kissy

开始前的准备 JSONP原理简介(知晓的同学就当复习一下 同源策略的限制让程序员想到了利用不受同源策略影响的<script>进行跨域请求.而单纯的JSON数据仅仅只是数据,被<script>加载入页面没有任何意义,因此需要一个变量作为函数名,也就是那个“P”,然后JSON数据作为函数参数传递过来.之后当浏览器加载完成后,函数执行.因此这个函数必须是个动态创建的全局变量.而JSONP其实就是动态加载js脚本.要传递变量给后端,我们需要一个参数,常用有jsonp,jsonpCallba