创建JavaScript函数的几种方式
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函数的几种方式的更多相关文章
- 创建javascript对象的几种方式
ECMAScript提供的对象有:String.Date.Array.Boolean.Math.Number.RegExp.Global 程序中需要用到很多自定义的js对象 1.直接创建 var ob ...
- JavaScript创建函数的三种方式
㈠函数(function) ⑴函数也是一个对象 ⑵函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码) ⑶函数中可以保存一些代码在需要的时候调用 ⑷使用typeof检查一个函数对象时,会返 ...
- 第十篇----------javascript函数的三种定义方式及区别
javascript定义函数有3种方式: //3种函数定义方式,前两种常用 /** * 1,function 语句式 * 形式:句子 * 名称:有名 * 性质:静态 * 解析时机:优先解析 * 作用域 ...
- JS创建对象,数组,函数的三种方式
害怕自己忘记,简单总结一下 创建对象的3种方法 ①:创建一个空对象 var obj = {}; ②:对象字面量 var obj = { name: "Tom", age: 27 ...
- JavaScript 函数的4种调用方法
JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. 作为一个函数调用 function myFunction(a, b) { return a * b; } ...
- JavaScript 创建对象的七种方式
转自:xxxgitone.github.io/2017/06/10/JavaScript创建对象的七种方式/ JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以 ...
- JavaScript创建对象的几种 方式
//JavaScript创建对象的七种方式 //https://xxxgitone.github.io/2017/06/10/JavaScript%E5%88%9B%E5%BB%BA%E5%AF%B9 ...
- (转)DLL中导出函数的两种方式(dllexport与.def文件)
DLL中导出函数的两种方式(dllexport与.def文件)http://www.cnblogs.com/enterBeijingThreetimes/archive/2010/08/04/1792 ...
- 【转】DLL中导出函数的两种方式(dllexport与.def文件)
DLL中导出函数的两种方式(dllexport与.def文件) DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport):另外一种方式是:采用模块定义 ...
随机推荐
- mysql的SQL集锦
1. SQL内顺号 SELECT (@num := @num + 1) as index, item FROM tbl, (select @num := 0) dmy; 2. 空
- C++并发编程学习笔记
// // main.cpp // test1 // // Created by sofard on 2018/12/27. // Copyright © 2018年 dapshen. All ...
- 解决laravel使用QQ邮箱发邮件失败
在 laravel 中使用 QQ 发送邮件的时候莫名其妙的出现了如下错误:Connection could not be established with host smtp.exmail.qq.co ...
- 使用python备份文件
想写个定时备份文件的功能,这个功能需要实现:1.搜索指定的目录里是否存在当天的文件2.如果存在压缩并加密文件3.通过ftp上传到备份服务器4.在备份服务器上定时将文件拷贝到移动硬盘并定时清理文件 本来 ...
- CentOS6.3上搭建expect无交互开发环境
1.背景 在面向shell编程时对于需要交互的场合则必须通过人工来干预,而对于这种方式是违反无人职守的原则:现在expect就解决了这个问题, Expect是一个免费的编程工具语言,用来实现自动和交互 ...
- 如何用MATLAB读stl并显示点云文件
function [VertexData,FVCD,isBinary]=stl2matlab(stlfile) % STL2MATLAB reads STL-file, ASCII or binary ...
- gitlab中批量删除本地以及远程tag的操作
git 批量删除标签# 删除所有远程标签git show-ref --tag | awk '{print ":" $2}' | xargs git push origin # 删除 ...
- 2016word多级列表 一级标题居中后偏左
一.如下图所示,定义好多级列表之后设置标题,但是发现标题居中后偏左. 二.选择多级列表,设置居左对齐
- curl -d中的json存在引号怎么处理?
1\将其改写为I'\''m就可以执行 2\ curl -u elastic:mypass -X GET "localhost:9200/_analyze?pretty" -d 'a ...
- mysql in 子查询 效率慢,对比
desc SELECT id,detail,groupId from hs_knowledge_point where groupId in ( UNION all ) UNION ALL SELEC ...