js中的几个重要内容

标签: js | 发表时间:2014-07-22 19:17 | 作者:长空一笑
出处:http://www.iteye.com

js函数几个重要内容:

js中不存在函数重载,如果定义了多个同名函数,最后一个会覆盖掉前面所有函数。

 

1:Arguments对象(可以实现模拟重载的效果)

  利用arguments对象的length属性,可以获取函数接收的参数的个数

 

例如:

 

function add(){
	if(arguments.length == 2){
		return arguments[0] + arguments[1];		
	}else if(arguments.length == 3){
		return arguments[0] + arguments[1] + arguments[2];
	}
}	

add(2,4);    //output      6
add(2,4,5);    //output     11

 

 

 

2:变量的作用域

  在js中定义变量是可以不用var修饰符的,定义局部变量时,如果没有使用var修饰符,

  js会自动将这个变量定义为全局变量

例如:

 

var a = "a";
	
function fn(){
	b = "b";
		
	alert(a);   //output   a
	alert(b);   //output   b
}

fn();
	
alert(a);  //output   a
alert(b);  //output   b

 

 

全局变量和局部变量同名,函数在调用时,会寻找局部变量(js中,局部变量的优先级高于全局变量)

 

例如:

 

var a = "a";  //定义并初始化变量a

function fn(){   //函数fn加载,未调用
	alert(a);  //output   undefind

	var a = "b";  //定义变量a,但未初始化

	alert(a);   //output   b
}
	
fn();    //调用函数fn
alert(a );   //output   a

 

 

3: js中的几种特殊函数

 

(1)匿名函数:(可以将函数作为参数传递)

可以定义某个匿名函数来执行某些一次性任务

function(参数){方法体}

例如:

 

function add(a, b){
	return a() + b() ;
}

var one = function(){
	return 2;
};
var two = function(){
	return 4;
};

alert(add(one,two));    //output   6

 

 

one 和 two 是函数

调用函数 add() 时,将 one 和 two 函数作为参数传递

函数 add() 在调用时,分别执行了函数 one 和 two

将函数 one 和 two 的运算结果,再次进行运算

这时,函数 one 和 two 就叫做回调函数

 

(2)回调函数:就是以函数作为参数传递给另外的函数来调用,作为参数的函数就叫做回调函数

 

alert( add( function(){return 2;}, function(){return 4;} ) );  //output   6

 

这里作为参数传递的匿名函数,就叫做匿名回调函数

 

(3)自调函数:(一般情况下,自调函数封装的函数都是匿名函数)用来执行某些一次性任务

第一个小括号:封装函数

第二个小括号:调用封装的函数

 

例如:

不含参数:

(
	function(){
		alert("javaScript");
	}
)();

 

 

含有参数:

(
	function(str){
		alert(str);
	}
)("hello");	

 

 

(4)私有(内部)函数:

节省了全局的命名空间

保证了私有性:只能自己范围内使用,外部不能访问

 

例如:

function fn(){
	var a = "hello";
		
	function n(){
		return a + "javaScript";
	};

	return n();
}
	
alert(fn());  //output  hello javaScript
alert(n());    //output    undefind

 

 

(5)返回函数的函数:

 

例如:

function fn(){
	//逻辑
	return function(){
		//逻辑
		return "javaScript";
	};
}

alert(fn());  //output   function(){return "javaScript";}

//要打印“javaScript”
alert(fn()());   //output   javaScript
var fun = fn();
alert(fun());   output    javaScript

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [js] 推荐:

WebView JS 交互

- - ITeye博客
WebView加jquery做页面会怎么样呢. // 创建WebView对象. // 把programList添加到js的全局对象window中,. // 这样就可以使用window.programList来获取数据. * 定义js回调java函数. // 绑定键盘的向上,向下按钮事件触发相应的js事件.

JS游戏引擎

- 米随随 - HTML5研究小组
If you don’t have anything better to do and want to help fellow redditors interested in JS game dev out, feel free to fork the list and modify it as you like.

來源請求.js

- 红烧鲤鱼 - Blog: timdream
很早以前就想講了,但講了大概又會被戰. 相較於英文維基百科,中文維基百科在社會和歷史條目充滿了 systemic bias. 但是那些主觀論述又不是編輯者有意加進去的,而是某種編輯者存在的社會所給予的暗示(Inception?)與集體共識,而不是原本百科全書應該有的可驗證的事實. 因為是暗示又是共識,所以有自覺的百科編輯者反而是少數;中文維基只好長成現在這個樣子了.

Js删除节点

- - JavaScript - Web前端 - ITeye博客
 方式一:传this参数调用方法:.  方式二:js方法中通过选择器获取节点:. //此处删除的是a节点 }. 方式三:通过jQuery方式获取节点:(尚未测试,有待测试. 此处a标签传this到js中,js通过this(即a节点)取parent(即p节点). (1)p.remove();可直接删除整个p节点.

JS游戏引擎列表

- sku - 酷壳 - CoolShell.cn
这里有一个网址收集了关于JS游戏引擎开发库的一个列表,转过来. 关于使用JS和HTML5做的一些小游戏,可参见《HTML5 小游戏展示》. Name Latest Release License Type Notes The Render Engine 1.5.3 MIT 跨浏览器; 大规模 API; 开源. 2 gameQuery 0.5.1 CC BY-SA 2.5 和 jQuery 一起使用 gTile 0.0.1 Tile based.

Deck JS: HTML5 幻灯片

- L - LinuxTOY
Deck.js 是一组开源的 JavaScript 类库,方便使用现代的 HTML5/CSS3/JS 技术创建幻灯片. 该软件十分适用于开源项目介绍,交互式的方式比单纯的文字说明更简洁易懂. 不废话了,赶紧前往该项目主页去体验 HTML5 时代的幻灯片吧. 分类: Productivity |. 收藏到 del.icio.us |.

JS三维模型库 Three.js

- Le - 开源中国社区最新软件
Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象. 你可以在它的主页上看到许多精采的演示. 不过,这款引擎目前还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是文档的匮乏) 演示:http://mrdoob.github.com/three.js/.

js Grid - 列表插件

- Bloger - 博客园-首页原创精华区
     js Grid - 列表插件.     1)Sponsor Flip Wall With jQuery & CSS一个非常不错的显示数据到网格里的插件. 点击后,缩略图会翻转,然后显示更多信息.      2)TableTree4J 是一个开源的基于javascript的树状菜单和表格控件,实用TableTree4J可以轻易实现带树状折叠效果的表格和树状折叠菜单.

Three js入门教程

- - 译言-电脑/网络/数码科技
译文来源: http://www.21haolou.com/articles/show/140. 我在自己的一些实验性项目中运用了 Three.js,它在处理浏览器3D效果方面表现优异. 通过Three js,你可以创建镜头(Cameras),物体(objects),光线(lights),材质(materials)等等,你还可以选择渲染器:可以使用HTML5的Canvas来绘制场景,也可选择使用WebGL或是SVG来渲染.

js对象深拷贝

- - ITeye博客
在做一个前台页面你的时候用到了一个自己写的List对象,在进行深拷贝的时候参考了网上的代码:. //对象扩展,tObj被扩展对象,sObj扩展对象. Object.extend(a,b);//a获得了b的所有属性. 我自己定义的list中没有定义constructor,所以执行sObj.constructor == Array会报错,我就修改为:.