创建JavaScript函数的几种方式

时间:2022-08-22 09:22:25
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中导出函数的两种方式&lpar;dllexport与&period;def文件&rpar;

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

  9. 【转】DLL中导出函数的两种方式&lpar;dllexport与&period;def文件&rpar;

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

随机推荐

  1. Jquery 模糊匹配ID

    [属性名称] 匹配包含给定属性的元素[att=value] 匹配包含给定属性的元素 (大小写区分)[att*=value] 模糊匹配[att!=value] 不能是这个值[att$=value] 结尾 ...

  2. build&sol;core&sol;config&period;mk

    # 如果定义了ANDROID_BUILD_SHELL,则ANDROID_BUILD_SHELL # 否则使用默认的/bin/bash ifdef ANDROID_BUILD_SHELL SHELL : ...

  3. 单页面应用SPA架构

    个人认为单页面应用的优势相当明显: 前后端职责分离,架构清晰:前端进行交互逻辑,后端负责数据处理. 前后端单独开发.单独测试. 良好的交互体验,前端进行的是局部渲染.避免了不必要的跳转和重复渲染. 当 ...

  4. C&num; 语言规范&lowbar;版本5&period;0 &lpar;第13章 接口&rpar;

    1. 接口 一个接口定义一个协定.实现某接口的类或结构必须遵守该接口定义的协定.一个接口可以从多个基接口继承,而一个类或结构可以实现多个接口. 接口可以包含方法.属性.事件和索引器.接口本身不提供它所 ...

  5. VS2015创建ASP&period;NET应用程序描述

    你的 ASP.NET 应用程序 恭喜! 你已创建了一个项目 此应用程序包含: 显示“主页”.“关于”和“联系方式”之间的基本导航的示例页 使用 Bootstrap 进行主题定位 身份验证,如果选择此项 ...

  6. JavaScript 包装对象

    万物皆对象 在JavaScript里,万物皆对象.但是某些对象有别于其它对象,我们可以用 typeof 来获取一个对象的类型,它总是返回一个字符串. typeof 123; // 'number' t ...

  7. python is&comma; &equals;&equals;区别

    “is” is the identity comparison. #比较引用是否相同 “==” is the equality comparison. #比较内容是否相同 >>> [ ...

  8. ubuntu下完全卸载opencv3&period;1&period;0

    在ubuntu下删除opencv需要以下步骤: 1.进入opencv的源代码文件夹下的release(这是你在安装opencv时候自己命名的,cmake时候所在的目录) 2.执行以下命令 sudo m ...

  9. 【MongoDB】嵌套数组查询方案

    From:http://*.com/questions/12629692/querying-an-array-of-arrays-in-mongodb 数据 db.multiA ...

  10. C&num; Stopwatch与TimeSpan详解

    http://www.cnblogs.com/newstart/archive/2012/09/21/2696884.html