JavaScript数据类型

1. typeof 运算符 返一个用来表示表达式的数据类型的字符串。

typeof expression ;

expression 参数是索要找类型信息的即兴表达式。

说明 typeof 是一个平头版运算符,放在一个运算数之前。

typeof 运算符把类型信息当作字符串返回。typeof 返回值有六栽或:
“number” ,“string”, “boolean”, “object” ,“function”, 和 “undefined.”

(而 ECMAScript 有 5 种原始类型(primitive type),即
Undefined、Null、Boolean、Number 和 String。)

4. instanceof运算符

凡是一个次之处女运算符。返回一个 Boolean 值,指出对象是否是特定类的一个实例。

expression  instanceof class

参数

 expression  必择项。任意对象表达式。

 class  必选项。任意已定义之目标类。

说明 设 object 是 class 的一个实例,则 instanceof 运算符返回 true 。如果
object不是负定类的一个实例,或者 object 是 null ,则归 false 。

用来判断一个变量是否有对象的实例,

如:

var a=new Array();

alert(a instanceof Array);会返回true,

还要alert(a instanceof Object)也会见回到true;

旋即是因Array是object的子类。

再如:

function test(){};

var a=new test();

alert(a instanceof test)会返回true。

如果对于利用typeof的言语:

function Person(){}
document.write
(“<br>typeof(Person):”+typeof(Person));    //function
var person = new Person();
document.write
(“<br>typeof(person):”+typeof(person));    //object

2. 

alert(null == undefined);  //输出 “true”
尽管这简单独价值等,但它们的含义不同:

undefined 是宣称了变量但无对其初始化时给该变量的值 或
未声明了的变量(只能用来typeof,但当赋值目标时编译器会活动将其宣称也全局变量)。

null
则用来表示没有有的靶子(即对象为空,或对象找不至)。如果函数或方法要赶回的是目标,那么找不至该对象时,返回的日常是
null。

3.

咱得以以 typeof 来取一个变量是否有,如 if(typeof
a!=”undefined”){alert(“ok”)},而不用失去采用 if(a) 因为要是 a
不在(未声明)则会拧。

对此 Array,Null 等新鲜对象下 typeof 一律返回 object,这多亏 typeof
的局限性。倘若我们想获得一个目标是否是累组,或判断有变量是否是某对象的实例则使选使用instanceof

 

认清一个变量是数组Array类型的措施 http://www.jb51.net/article/41413.htm

 

25单你用了解之JavaScript面试题:http://www.jb51.net/article/77140.htm

以下重点是摘要,具体详情还伸手打开链接查看

即时施行ECMAScript函数表达式(Immediately-Invoked Function Expression)

IFE
有少独比经典的应用状况,一凡近乎于以循环中定时输出数据项,二凡是接近于
JQuery/Node 的插件与模块出。

1
2
3
4
5
for(var i = 0; i < 5; i++) {
 setTimeout(function() {
 console.log(i);
 }, 1000);
}

点的输出并无是您以为的0,1,2,3,4,而输出的漫天凡是5,这时 IIFE
就可知出因此了:

1
2
3
4
5
6
7
for(var i = 0; i < 5; i++) {
 (function(i) {
 setTimeout(function() {
 console.log(i);
 }, 1000);
 })(i)
}

如若于 JQuery/Node 的插件与模块出被,为避免变量污染,也是一个大娘的
IIFE:

1
2
3
(function($) {
 //代码
 } )(jQuery);

 

6、下面两只函数的返回值是同样的吧?为什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function foo1()
{
 return {
 bar: "hello"
 };
}
 
function foo2()
{
 return
 {
 bar: "hello"
 };
}

当编程语言中,基本还是动分号(;)将报句分隔开,这可以增加代码的可读性和整洁性。而于JS中,如要语句各占独立一行,通常可以看看略告句间的支行(;),JS
解析器会根据是否健康编译来支配是否自动填写充分号:

1
2
3
var test = 1 +
2
console.log(test); //3

每当上述情况下,为了是分析代码,就无见面自行填写充分号了,但是对于 return
、break、continue
等话,如果后紧跟换行,解析器一定会自行在后填充分号(;),所以地方的老二个函数就变成了这样:

1
2
3
4
5
6
7
function foo2()
{
 return;
 {
 bar: "hello"
 };
}

故此亚只函数是回 undefined。