这几天在看邱俊涛著的《Javascript核心概念与实践》书籍,及这几天看到前端面试疑难题解析的博文,感觉对Javascript语言编程有一步认识与理解,然后将这些理解分享给大家,希望小编的想法可以正确引导你。不过小编也不排除下面想法可能存在问题,但是博友发现问题请在评论中指出,让你的正确思想正确指导我们,分享你的成就。
一、typeof 与 instanceof 的用法
这里先看一下这两个含义:
typeof 是一个一元的操作符(运算符),一般放在运算数之前,用来判断运算数的类型,返回值是一个字符串,一般只有以下number,boolean,string,function,object,undefined六个字符串。
instanceof也是一个运算符,一般用来判断运算数是不是某一类的实例。 返回值是boolean值。结构列如: O instanceof A O表示运算数,A表示某一类。
下面举例说明:
var a = 1;
var b = 3.21454;
var c = "Hello world!";
var d = [1,2,3];
var e = new Object();
var f = function(){
console.log("Hello world!");
}
console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
console.log(typeof d);
console.log(typeof e);
console.log(typeof f);
运行结果是:
number
number
string
object
object
function
这里大家也看到了d是一个数组Array,但是它typeof运算后也是Object。所以用typeof判断时要注意是否有Array数组。如何判断是否是Array后面小编会说明。现在先看instanceof的例子:
var d = [1,2,3];
var f = function(){
console.log("Hello world!");
}
var bRes = d instanceof Array;
console.log(bRes);
var bRes = d instanceof Object;
console.log(bRes);
bRes = f instanceof Function;
console.log(bRes);
bRes = f instanceof Object;
console.log(bRes);
bRes = Array instanceof Object;
console.log(bRes);
bRes = Function instanceof Object;
console.log(bRes);
结果:
true
true
true
true
true
true
没有看错,它全部都是正确的,因为在Javascript语言中,可是这样将一切都是对象。
上面不是还没有讲述如果判断Array吗? 只要结合typeof与instanceof一起使用就可以正确判断。
注:这里还有一个特殊:
console.log(typeof null);
console.log(typeof undefined);
结果是: Object
undefined
小编先写这里,如果有不对的地方,望博友们可以评论提出,谢谢!