创建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):另外一种方式是:采用模块定义 ...
随机推荐
- 05 JS基础DOM
JS的window对象定时器: window下一些方法: <script> 弹出 window.alert('hello') 返回布尔值 var ret = window.confirm( ...
- 深入理解Java虚拟机读书笔记4----虚拟机类加载机制
四 虚拟机类加载机制 1 类加载机制 ---概念:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型. -- ...
- 魔力Python——对象
Python之中,一切皆对象. 本文分为4部分: 1. 面向对象:初识 2. 面向对象:进阶 3. 面向对象:三大特性----继承,多态,封装 4. 面向对象:反射 0. 楔子 面向过程和面向对象的是 ...
- Ajax需要带头信息跨域问题的解决
$.ajax({ type:"get", url:"http://localhost:8082/index/getMsg", dataType:'json', ...
- zabbix 本地编译安装
转载地址 https://www.cnblogs.com/wangxiaoqiangs/p/5412147.html 简介: 单独整理一下 Zabbix Agent . 1.安装包选择 下载地址:ht ...
- 基于WebGL架构的3D可视化平台ThingJS-搭建设备管理系统
国内高层建筑不断兴建,它的特点是高度高.层数多.体量大.面积可达几万平方米到几十万平方米.这些建筑都是一个个庞然大物,高高的耸立在地面上,这是它的外观,而随之带来的内部的建筑设备也是大量的.为了提高设 ...
- 【转】未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
“/xxxxx”应用程序中的服务器错误. ------------------------------------------------------------------------------- ...
- PHP的ob_flush()与flush()区别
PHP的ob_flush()与flush()区别 标签: php ob-flush flush buffer 2017年03月24日 17:50:393248人阅读 评论(0) 收藏 举报 分类: ...
- uvm_scoreboard
http://www.eetop.cn/blog/index.php?uid/13812/action/viewspace/itemid/6826765/php/1 uvm_in_order_comp ...
- L3-021 神坛(极角排序求三角形最小面积)
在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...