/*
* 变量的作用域:
* 局部变量:定义在函数体内或者代码块的内部,参数是局部变量
* 全局变量:定义在最外的函数体为,在代码的任何地方都可以访问的到,
* 没有带关键字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
*/
函数的作用域&类型检测
猜你喜欢
转载自blog.csdn.net/weixin_45936690/article/details/104608527
今日推荐
周排行