js(1)

前言:
浏览器组成:
(1)shell部分
(2)内核部分:渲染引擎、js引擎和其他模块。
javascript特点:单线程、解释性语言、脚本语言。

  1. typeof六种数据类型:number、String、Boolean、undefined、object、function

  2. parseInt作用:
    (1)把数字转化为整型
    (2)目标进制作为基底转化为十进制。parseInt(num,radix),radix的范围是2~36。

  3. toString作用:
    (1)把值转化为字符串形式。undefind和null不能用toString,会报错。(数字).toString
    (2)以十进制为基底转化为目标进制。demo.toString(radix)

  4. 预编译
    (1)形参和arguments是一一对应的。实参列表arguments是类数组。
    (2)函数预编译:函数声明整体提升,变量 声明提升。
    预编译四步:

  • [ 1] 创建AO对象。

  • [ 2] 找形参和变量声明,将变量和形参名作为AO的属性名,值为undefined。

  • [ 3] 将实参和形参统一。

  • [ 4] 在函数体里找函数声明,值赋予函数体。
    注:变量未经声明就赋值(var),此变量就为全局变量所有。一切声明的全局变量,全是window属性。
    (3)全局预编译
    步骤:

  • [ 1] 创建GO对象。GO===window

  • [2 ] 找变量声明,将变量名作为GO的属性名,值为undefined。

  • [ 3] 找函数声明,值赋予函数体。

5.闭包
当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄露。
闭包的作用:
(1)实现公有变量,比如函数累加器。

 <script type="text/javascript">
  function add(){
		var count = 0;
		function demo(){
			count ++;
			console.log(count);
		}
		return demo;
	}
	var counter = add();
	counter();
	counter();
	counter();
 </script>

(2)可以做缓存(存储结构)

 <script type="text/javascript">
   function eater(){
		var food = "";
		var obj = {
			eat:function (){
				console.log("I am eating" + food);
				food = "";
			},
			push:function (myFood){
				food = myFood;
			}
		}
		return obj;
	}
	var eater1 = eater();
	eater1.push("banana");
	eater1.eat();
 </script>

(3)可以实现封装,属性私有化(经典例子:圣杯模式)。

<script type="text/javascript">
   function inherit(target,origin){
		function F(){};
		F.prototype = origin.prototype;
		target.prototype = new F();
		target.prototype.constructor = target;
		target.prototype.uber = origin.prototype;
	}
	</script>

(4)模块化开发,防止污染全局变量。

<script type="text/javascript">
 var init = (function(){
		 	var name = 'abc';
		 	function callName(){
		 		console.log(name);
		 	}
		 	return function(){
		 		callName();//留出一个函数作为接口,return出去,调用init()时,就调用了callName()函数
		 	}
		 })
		 init();//相当于入口函数
</script>

注:当输出的东西本来想按照顺序输出的,结果输出了同样的数,多半就是闭包的问题,要用立即执行函数解决。
6.立即执行函数
立即执行函数是针对初始化功能的函数,不占用内存空间。
写法:(1)(function(){})w3c组织建议的写法;(2)(function(){})()
注:只有表达式才能被执行符号执行。

发布了9 篇原创文章 · 获赞 7 · 访问量 756

猜你喜欢

转载自blog.csdn.net/qq_40619263/article/details/90270959
JS1
今日推荐