现在的位置: 首页 > 综合 > 正文

javascript读书笔记1

2018年04月21日 ⁄ 综合 ⁄ 共 1413字 ⁄ 字号 评论关闭

最近在看深入理解javascript系列,由于个人能力问题,不能全部看懂,便把一些不太难的记录下来,做了些笔记

这是原文的地址,大家有兴趣可以取看看http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html

1. 减少全局变量的使用。
全局变量的使用可能会导致与自己的写的脚本,或第三方脚本发生命名冲突,导致一些脚本代码的变量被覆盖从而失效
同时需要有可能会发生隐式创建全局变量的时候,有如下几种情况

<span style="white-space:pre">	</span>1.
	<script type="text/javascript">
		function t(){
			a = 1;//隐式创建了一个全局变量,应改为var a = 1;
			//....
		}
		t();
		alert(a);
	</script>

这种情况下,警告框的值为1。因为当不用var声明的时候,就相当于隐式创建了一个全局变量

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


这种情况下,a是局部变量,而b是全局变量,因为var a = b = 1;相当于
b = 1;
var a = 1;

这样就和第一种情况一样了

2. var在函数中位置不同的问题

       var在函数中使用的地方不一样,结果就会像在开头声明一样,如下代码

<span style="white-space:pre">	</span> a = 1;
	 function fun(){
	     alert(a);//undefined
	     var a = 2;
<span style="white-space:pre">	</span>     alert(a)//2
	 }
	 fun();

 这种情况和预想的不一样,即第一个alert找不到函数声明的a,则会调用全局变量a,但是却不是这样的,原因是
   即使var声明在第二句话,但是它相当于如下的效果

<span style="white-space:pre">	</span>a = 1;
	function fun(){
 	    var a;
<span style="white-space:pre">	</span>    alert(a);//undefined
	    a = 2;
	    alert(a)//2
	}
	fun();

即var会被放到函数最开头

3. == 和 ===的区别

 == 是不严格的等于,而===是严格等于,且==在比较的时候如果类型不一样会进行类型转换,看下如下代码:

<span style="white-space:pre">	</span> alert("" == 0);//true
	 alert("" === 0);//false
         alert(false == 0);//true
    	 alert(false === 0);//false

即"" == 0在比较的时候会将""转化成0再进行比较,其他类似而===当类型不同的时候就返回false了。

4. var声明的全局变量不能被删除

看如下代码

<span style="white-space:pre">		</span>a = 1;
		alert(a);//1
		delete a;
		alert(a)//报错
		//而如下的代码
		var a = 1;
		alert(a);//1
		delete a;
		alert(a)//1

即var声明的全局变量不能被delete删除




抱歉!评论已关闭.