window.onload = function() {
// console.log('ok');
//正规的创建函数
function test(abc, d) {
return abc(d);
} function jack(testString) {
console.log(testString);
}
test(jack, 'jackjones');
test(jack, '我是Jack,您好!');
//通过Function()创建函数
var b = new Function('x,y', 'return x+y');
console.log(b(5, 2));
//创建匿名函数
var c = function() {
console.log('我是您名函数!请问你是么?');
}
c(); //调用匿名函数
var d = null;
if(7 > 8) {
d = function() {
console.log('7>8');
}
} else {
d = function() {
console.log('7<8');
}
}
// console.log(d);
d(); function testfor() {
for(var i = 0; i < arguments.length; i++) {
console.log(i);
}
for(var i = 0; i < 5; i++) {
console.log(i);
}
}
testfor(1, 2, 3, 4, 5, 6, 7, 8);
console.log('======================='); //普通的递归函数的写法
function digui(num) {
if(num == 1) {
return 1;
} else {
return num * digui(num - 1);
}
}
console.log(digui(4)); //調用遞歸函數
//使用arguments.calle方法實現遞歸方法
function digui_num(num) {
if(num == 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
var OtherDIgui = digui_num;
digui = null;
console.log(OtherDIgui(4));
//this的使用方法
color = 'yellow' function TestColor() {
var color = 'red';
console.log(this.color); //這裡的this指向的是window對象
} function TestColor_Test1() {
var color = 'red';
console.log(color); //這裡沒有加this表示從函數裡面網外面找
} function TestColor_Test2() {
var color = 'black'; function test2() {
var color = 'test2color'; function test1() {
var color = 'test1color';
return color;
}
return test1();
}
return color;
}
TestColor();
TestColor_Test1();
console.log('==========================');
TestColor_Test2();
//閉包的使用方法研究
function bibao() {
var fontsize = '微軟雅黑';
return function bibao1() {
var fontsize = '行書';
return fontsize;
}
} function bibao1() {
var jack = 'jack';
return function() {
console.log(jack);
}
}
//調用閉包的匿名函數
var p = bibao1();
p();
//調用非匿名函數的內部函數
console.log(bibao()()); function bibao2() {
var n = 100; function fn() {
return n;
}
return fn; //將函數的指針作為函數返回
}
console.log(bibao2()());
console.log('-========')
//閉包實現累加功能
function fn1() {
var n = 1;
add = function() {
n += 1;
} function fn2() {
n += 1;
console.log(n);
}
return fn2;
}
var resule = fn1();
resule();
resule();
resule();
resule();
resule();
//研究JavaScript閉包中的this含義
var obj = {
testname: 'jack',
fun: function() {
var testname = 'funTest';
console.log(this.testname); //此處訪問到的name為obj的值
return function InnerFun() {
console.log(this.testname); //此處的testname的值為Window的值,所以打印出來為undeifined
};
},
addr: '上海市徐匯區',
fn: function() {
var age = 100;
var t = this;
return function() {
console.log(t.testname); //將this進行轉換
}
}
}
var pp = obj.fun();
console.log(obj.addr);
pp(); //undefined
var b = obj.fn();
b(); //jack
//創建匿名函數
var n = function() {
console.log('ok');
}
n(); //匿名函數的調用
//創建自動執行的函數
(function() {
console.log('我是自動執行函數');
})();
//使用function創建函數
var f = new Function('x,y', 'console.log(x*y)');
f(10, 10);
}

创建JavaScript函数的几种方式的更多相关文章

  1. 创建javascript对象的几种方式

    ECMAScript提供的对象有:String.Date.Array.Boolean.Math.Number.RegExp.Global 程序中需要用到很多自定义的js对象 1.直接创建 var ob ...

  2. JavaScript创建函数的三种方式

    ㈠函数(function) ⑴函数也是一个对象 ⑵函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码) ⑶函数中可以保存一些代码在需要的时候调用 ⑷使用typeof检查一个函数对象时,会返 ...

  3. 第十篇----------javascript函数的三种定义方式及区别

    javascript定义函数有3种方式: //3种函数定义方式,前两种常用 /** * 1,function 语句式 * 形式:句子 * 名称:有名 * 性质:静态 * 解析时机:优先解析 * 作用域 ...

  4. JS创建对象,数组,函数的三种方式

    害怕自己忘记,简单总结一下 创建对象的3种方法 ①:创建一个空对象   var obj = {}; ②:对象字面量 var obj = { name: "Tom", age: 27 ...

  5. JavaScript 函数的4种调用方法

    JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. 作为一个函数调用 function myFunction(a, b) { return a * b; } ...

  6. JavaScript 创建对象的七种方式

    转自:xxxgitone.github.io/2017/06/10/JavaScript创建对象的七种方式/ JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以 ...

  7. JavaScript创建对象的几种 方式

    //JavaScript创建对象的七种方式 //https://xxxgitone.github.io/2017/06/10/JavaScript%E5%88%9B%E5%BB%BA%E5%AF%B9 ...

  8. (转)DLL中导出函数的两种方式(dllexport与.def文件)

    DLL中导出函数的两种方式(dllexport与.def文件)http://www.cnblogs.com/enterBeijingThreetimes/archive/2010/08/04/1792 ...

  9. 【转】DLL中导出函数的两种方式(dllexport与.def文件)

    DLL中导出函数的两种方式(dllexport与.def文件) DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport):另外一种方式是:采用模块定义 ...

随机推荐

  1. 04 Javascript的数据类型 数组 函数

    javascript:包含ECMAscript DOM BOM 描述了以下内容: 语法 类型 语句 关键字 保留字 运算符 对象 引入方式: <script> alert(123) < ...

  2. 深入理解Java虚拟机读书笔记8----Java内存模型与线程

    八 Java内存模型与线程   1 Java内存模型     ---主要目标:定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节.     ---此处的变量和J ...

  3. C罗转会尤文图斯

    皇家马德里头号球星C罗转会意甲尤文图斯,结束了9年的皇马生涯,已获得5座金球奖.

  4. window django-https 证书

    1.openssl 下载 http://slproweb.com/products/Win32OpenSSL.html 根据你的系统来选择不同的版本下载安装,选带light的比较小. 2.安装后添加环 ...

  5. 第五篇、Python之迭代器与生成器

    1.迭代和递归等概念 循环(loop):指的是在满足条件的情况下,重复执行同一段代码.比如,while语句,for循环. 迭代(iterate):指的是按照某种顺序逐个访问列表中的每一项.比如,for ...

  6. delphi:Exception EInvalidPointer in module Project1.exe

    在用delphi XE5编程时遇到如下问题: Exception EInvalidPointer in module Project1.exe at 00007595. Invalid pointer ...

  7. arcgis point 随着 line类型的轨迹运动的动画

    animate : function(frampoint,topoint,speed = 60){ var path = topoint.geometry.paths[0]; var i = 1; v ...

  8. 二.第一个自动化demo,打开APP-如何获取包名和activity。(真机)

    环境配置成功后,我们就可以进行第一个自动化测试了.用真机则不需要安装安卓模拟器.以一个简单的打开APP为例. 一.获取包名和activtity      启动一个app,我们需要知道它的平台.版本号. ...

  9. VB6 Collection实现百万文本去重

    上一篇数组的去重说到,对于千次计算以上的去重基本上特别的吃力,这里就介绍一种方法,通过Collection集合对象来过滤重复. Option Explicit '//By: InkHin '// 参考 ...

  10. 新年Flag,零基础程序媛编程学习计划(持续更新ing)~~

    新的一年立下了转行做程序媛的Flag,我是文科妹子,专业是做市场传销…哦不,是市场营销,算是零基础转行,目标是半年内完成自学进入公司工作,目前打算从事的方向短期目标以入行为主,以前端(可以发挥自身审美 ...