函数当成类看当成匿名对象看,都是跟java吻合的,只有当成函数看(函数自己可以执行)跟java区别在这里。

function fact(){}
var F = fact ;
函数名是函数对象的地址,是地址就有内存区域,执行就是地址名()小括号,var f = new F(),f就不是指向函数F的地址了,他是F类的对象,他的地址里面是对象,不仅仅是一个函数。 function fact(num){
if(num <=1) return 1 ;
else return num*fact(num-1), //fact只是一个变量名存的是函数地址,
}
alert(fact(5));
var F = fact ;
fact = null;//进一步证明了fact只是一个变量名存的是函数地址,
alert(F(5)); //报错,fact不是一个函数
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf-8>
//形参无类型
function test(a ,b){
alert(a+b);
alert(111);
return a+b;
}
var c = test(10 , 20);
//函数当成类看当成匿名对象看,都是跟java吻合的,只有当成函数看(函数自己可以执行)跟java区别在这里。 alert(c);
alert(typeof test); //函数也是一种数据类型 (function类型) function test1(aa){
aa();
}
function test2(){
alert('执行啦');
}
test1(function(){ alert('我也执行啦!')}); // 在js中函数是可以嵌套定义的 (尽量不要这样去定义)
function test3(){
function test4(){
alert('我是test4!');
}
test4();//函数调用
}
test3();//函数调用
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf-8>
// 3种方式定义函数
// 1 function语句式
function test1(){
alert('我是test1');
}
test1(); // 2函数的直接量 ECMAScript
var test2 = function(){
alert('我是test2');
}
test2(); // 3function构造函数式
var test3 = new Function("a" , "b" ,"return a+b;");//函数参数,函数体
alert(test3(10,20));//30 //效率对比
var d1 = new Date();
var t1 = d1.getTime();
for(var i =0 ; i <100000;i++){
function test1(){;} //function语句的形式,最开始函数解析一次放在内存中,多次调用用同一个,
var test2 = new Function();//函数调用一次就解析一次,执行完就销毁了,多次调用多次解析,
}
var d2 = new Date();
var t2 = d2.getTime();
alert(t2 -t1); test1();//可以运行
function test1(){
alert('1111');
}
alert(test2); //undefined
test2();//test2 is not a function
var test2 = function(){
alert('2222');
} /* 4 2 3 3 5 6
{
var f : 未定义
f : function f(){return 4;}
}
{
var f : new Function("return 2;"); ---> function(){return 3;} --->
new Function("return 5"); ---> function(){return 6 ;}
}
*/
function f(){return 1;}
alert(f()); //返回值为4
var f = new Function("return 2;");
alert(f()); //返回值为2
var f = function(){return 3;}
alert(f()); //返回值为3
function f(){return 4;}
alert(f()); //返回值为3
var f = new Function("return 5");
alert(f()); //返回值为5
var f = function(){return 6 ;}
alert(f()); //返回值为6 //函数作用域的概念
var k = 1 ;
function t1(){
var k = 2 ; //局部变量 k
function test(){return k ;} //function语句,k = 2
var test = function(){ return k}; //函数直接量,k = 2
var test = new Function('return k;'); // 构造函数的方式,k = 1
alert(test());
}
t1();
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf-8>
//js中 函数的参数: 形参 实参
function test(a,b){
alert(test.length); // 形参个数
//内部就是用一个数组去接受函数的实际参数,arguments 对象 可以访问函数的实际参数,只能在函数的内部访问和使用
alert(arguments.length);
alert(arguments[0]);
alert(arguments[1]);
if(arguments.callee.length == arguments.length){
return a+b;
} else {
return '参数不正确!';
}
//arguments对象 用的最多的 还是做递归操作
//arguments.callee 指的是函数本身。
}
alert(test(10,20)); // 30 function fact(num){
if(num <=1) return 1 ;
else return num*arguments.callee(num-1); //num*fact(num-1),fact只是一个变量名存的是函数地址,
}
alert(fact(5));
var F = fact ;//函数名是函数对象的地址,是地址就有内存区域,执行就是地址名()小括号,var f = new F(),f就不是指向函数F的地址了,他是F类的对象,他的地址里面是对象,不仅仅是一个函数。
fact = null;//就不能写num*fact(num-1),进一步证明了fact只是一个变量名存的是函数地址,
alert(F(5));
</script>
</head>
<body>
</body>
</html>

js08--函数1的更多相关文章

  1. js---08函数 定时器

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  2. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  3. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  4. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  5. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  6. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  7. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  8. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  9. JS核心系列:浅谈函数的作用域

    一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...

  10. C++中的时间函数

    C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...

随机推荐

  1. Android Studio获取开发版SHA1值和发布版SHA1值,详细过程

    转自原文 Android Studio获取开发版SHA1值和发布版SHA1值的史上最详细方法 前言: 今天我想把百度地图的定位集成到项目中来,想写个小小的案例,实现一下,但在集成百度地图时首先要申请秘 ...

  2. ADL & 实参相依的查找 & 成员与非成员的查找

    也就是会根据实参,所处在的名字空间,来查找对应名字空间里面的函数. 对于<<也是常见的场景,会根据实际要打印出来的下一个操作数,来决定调用哪个命名空间里面的函数. 注意,不同命名空间里面的 ...

  3. 不要小看了get 与set

    不知道大家曾经是怎么使用实体中的get与set的.我先前是这样使用的. 先定义一个实体类.之后写与之相关的字段名称.最后匹配上与之相关的属性,控制字段的读写权限. 曾经使用方式 代码1 public ...

  4. Armbian hostname and WiFi configuration

    In previous post i have described installation of Armbian on Orange Pi PC Plus. Now is the time for ...

  5. django 笔记3

    FBV function base view url.py index -> 函数名 view.py def 函数(requset): ... CBV class base view /inde ...

  6. Spring MVC -- UEditor 编辑器整合 上传图片至外部文件夹(非项目文件夹)

    上传图片到外部储存,回显图片 下载全部UEditor资源源码 config.json配置 config.json中添加如下属性 (一定要添加此属性): "physicsPath": ...

  7. Controller接口控制器2

    5.ServletForwardingController 将接收到的请求转发到一个命名的servlet,具体示例如下: package cn.javass.chapter4.web.servlet; ...

  8. Spring Security Architecture--官方

    原文地址:https://spring.io/guides/topicals/spring-security-architecture/ Table of contents Authenticatio ...

  9. Nginx 代理以及HTTPS (二)

    一.HTTPS解析 https 加密 私钥 公钥 http 的握手 是确认网络是连通的. https 的握手 是一个加密的过程 加密图 二. 使用Nginx 部署HTTPS 服务 1.证书生成命令(h ...

  10. 基于SIFT的点云关键点提取

    这篇博文主要介绍SIFT算法在提取点云图像关键点时的具体用法. 尺度不变特征转换(Scale-invariant feature transform,SIFT)是David Lowe在1999年发表, ...