JS函数定义方式

最近没事看了下类似淘宝,京东的前台源码,发觉自己基本看不懂,硬着头皮看了些,也看得不是很明白,大概总结了下看不懂的原因,

1,        我是几个月前报的培训班培训出来的,JS的基础,太薄弱了,基本都是以JAVA的基础来看的JS,其实JS本身也有很多特性的,所以在代码中遇到这些就看不懂了,例如:像JS最基本的一些数据类型都不知道是怎么回事,如define是什么,NaN是什么,都有什么特性,都不懂;


2,        形式上很灵活,就拿很基本的函数定义来说吧,JS定义函数的形式有好几种,有些方式定义函数会立即执行,还有别的方式定义函数不会立即执行,开始,这些都分不清,所以就读不懂了;


3,        JS的要求并不严格,如类型是弱类型,分号经常是可有可无的,而且经常会压缩空格之类的,使得代码紧凑,很难读,变量的起名也经常就用一个字母来表示,没有什么函数,可读性很差,函数的调用之类不会像JAVA代码一样,用快捷键再一点就可以看到方法的定义了,但JS就不行了,而函数定义,而使用又经常不在一起,所以读着吃力。


这篇文章我就简单把JS方法定义方式总结一下:

1.        最简单的声明方式,如下代码所示,定义了一个名为a的函数,不会执行,需要用a()调用才会执行。

代码:

 

<span style="white-space:pre">	</span><script type="text/javascript">
		function a()
		{
			alert(123);
		}
	</script>


2.        定义匿名函数,如下代码所示,定义了一个匿名函数,然后把方法赋值给一个变量,这种和第一种方式的区别是,第一种可以在声明前调用方法,而这种方式则不可以,

代码:
<span style="white-space:pre">	</span><script type="text/javascript">
		var a = function()
		{
			alert(123);
		}
	</script>


3.        定义一个匿名函数并立即执行,

代码:

<span style="white-space:pre">	</span><pre name="code" class="javascript"><script type="text/javascript">
		(function(){
			alert(123);
		})();
	</script>

 这种方式,还可以把后面括号里放一些参数,这样,后面括号里的变量值就可以对应传给函数的参数列表中的参数了 

代码:

<span style="white-space:pre">	</span><script type="text/javascript">
		(function(a,b){
			alert(a+b);
		})(1,2);
	</script>

使用jQuery的$时经常会发生jQuery的$与其他框架的$使用冲突,常常就会使用上述方式来避免发生冲突

代码:

<span style="white-space:pre">	</span><script type="text/javascript">
		(function($){
			alert(a+b);
		})(jQuery);
	</script>


4.我要说的第四种严格说来这并不算是定义函数的一种方式

代码:

<span style="white-space:pre">	</span><script type="text/javascript">
		$(function(){
<span style="white-space:pre">			</span>$("#myinput").val(234);
<span style="white-space:pre">		</span>})();
	</script>
这种写法其实是添加document.ready事件,其等价于以下几种写法

代码:

<span style="white-space:pre">	</span><script type="text/javascript">
		$().ready(function(){
			$("#myinput").val(234);
		})();
	</script>

<span style="white-space:pre">	</span><script type="text/javascript">
		$(document).ready(function(){
			$("#myinput").val(234);
		})();
	</script>

<span style="white-space:pre">	</span><script type="text/javascript">
		document.ready = function(){
			$("#myinput").val(234);
		};
	</script>

 而这种写法的好处就在于由于是添加document.ready事件,所以函数会在document加载完成后执行,而我们经常习惯把JS代码写在body前,而此时如果使用第四种定义方式定义并执行函数,并且在函数里需要对body里的对象进行操作时就会发生错误,因为document还没加载,所以实际上是取不到对象的,这一点尤其需要注意。

另外还要说明的一点是我们有时还会使用<body οnlοad=”load()”>定义onload事件,这个事件的执行是在document.ready事件之后的.

5.补充一种,

用 Function 类直接创建函数的语法如下:

var function_name = new function(arg1, arg2, ..., argN, function_body)

在上面的形式中,每个 arg 都是一个参数,最后一个参数是函数主体(要执行的代码)。这些参数必须是字符串。

注意:尽管可以使用 Function 构造函数创建函数,但最好不要使用它,因为用它定义函数比用传统方式要慢得多。不过,所有函数都应看作 Function 类的实例。

<span style="white-space:pre">	</span><script type="text/javascript">
		var a = new Function()
		{
			alert(123);
		}
	</script>




编程技术交流请加QQ群:点击链接加入群【Just Do IT】:https://jq.qq.com/?_wv=1027&k=478lBF3


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值