函数的作用域&类型检测

		/*
		 * 变量的作用域:
		 * 局部变量:定义在函数体内或者代码块的内部,参数是局部变量
		 * 全局变量:定义在最外的函数体为,在代码的任何地方都可以访问的到,
		 * 没有带关键字var的也是全局变量
		 * 访问规则:子函数可以访问父函数的变量,父函数不可以访问子函数的变量
		 */
		
		//在函数体内声明的变量,在函数体外的没法访问的,这个变量的作用域就只是在这个函数体内
		
		//两个不同的函数体内,同名的变量是互相独立,互不影响的
		
		//内部函数可以访问外部函数的变量,但是外部函数没有办法访问内部函数的变量
		
		/*
		 * 如果在嵌套函数中,出现变量名重名的情况,js的函数在查找变量的时候,由内向外去查找
		 * 如果重名,内部函数的变量将屏蔽外部函数的变量
		 */

		/*
		 * 函数类型的检测
		 * typeof 和 instanceof
		 * typeof 返回类 类型为function类型,就是函数
		 * instanceof:识别正在处理的对象的类型,是类型检测,返回true,不是返回false
		 */
		var fun = function(){}
		var obj = {};
		var arr = [];
		var n_null = null;
		console.log(typeof fun);//functions
		console.log(typeof obj);//object
		console.log(typeof arr);//object
		console.log(typeof n_null);//object
		
		/*
		 * typeof可以检测除了null以外的所有基本数据类型,可以检测function,
		 * 数据,对象,null返回的都是object
		 */
		
		console.log(fun instanceof Function);//true
		console.log(obj instanceof Object);//true
		console.log(arr instanceof Array);//true
		console.log(n_null instanceof Object);//
		
		/*
		 * typeof和instanceof的区别:
		 * typeof是用来判断参数是什么类型的,返回值是用来说明参数类型的字符串
		 * 返回值的结果可以是"number","string","boolean","undefined","object","function"
		 * 其中引用数据类型(对象和数组)和null类型,返回的都是object,所以使用typeof来判断参数的类型有局限性
		 * 
		 * instanceof是用来判断一个对象在其原型链中是否存在一个构造函数的prototype属性。
		 * a instanceof b 就是判断a是否为b的实例,是返回true,不是返回false
		 */
发布了31 篇原创文章 · 获赞 32 · 访问量 1265

猜你喜欢

转载自blog.csdn.net/weixin_45936690/article/details/104608527