JS中有趣的知识
1.分号与换行
function fn1(){
return {
name: 'javascript'
};
}
function fn2(){
return
{
name: 'javascript'
};
}
var obj1 = fn1();
var obj2 = fn2();
console.log(obj1);
console.log(obj2);
这个例子看上去没有什么不同,但是实质上,确实是不同的。第一个输出结果为一个object ,而第二个输出结果为undefined。为什么?
因为js中是不需要分号和换行这个东西的,第二个会被解析成:
function fn2(){
return ;
{
name: 'javascript'
};
}
所以实质上返回的是一个undefined。
2.五大类型中,关于null
js有五大数据类型boolean,string,number,undefined,object。而为什么
typeof null
会被解析为 object 呢?
原因是在计算机底层存储数据时是以二进制格式进行存储的,如果前三位为0的话会被解析为object数据类型。而null的所有位数都为0,当解析null时,前三位先被解析,计算机错认为null为object类型,这属于计算机语言层面的一个bug。
3.关于undefined
undefined是undefined数据类型的实例,虽然它在实际应用过程中并不能用来存储数据,但我们可以对他进行一些操作。
当我们 对undefined数据类型名进行类型检测时
var undefined = 10;
var string=10;
console.log(typeof undefined);
console.log(typeof string);
显示结果为 :number number。这是因为undefined并不是关键字和保留字。如果对关键字进行声明,会报错。
当我们对他进行数据类型检测时
console.log(typeof undefined)
显示结果为undefined。
当我们对其他数据类型进行类型检测时
console.log(typeof object);
console.log(typeof number);
console.log(typeof string);
console.log(typeof boolean);
显示结果却不是数据类型本身的类型,而是function;
但是由于undefined并不是关键字和保留字,所以我们可以重新声明它
var undefined = 10;
var string=10;
console.log(typeof undefined);
console.log(typeof string);
显示结果为:number number;可见undefined具有不变值的属性。同时开头字母小写的
var undefined = 10;
var string=10;
var boolean=10;
var object=10;
var number=10;
console.log(typeof undefined);
console.log(typeof string);
console.log(typeof object);
console.log(typeof boolean);
console.log(typeof number);
显示结果为:undefined number number number number 。可见同名且首字母小写的数据类型实例只有undefined一个,其他的都不是。
4.在javascript中不存在重载函数
有一定后端知识的同学都知道在c++和java中都存在函数重载,
而javascript中却不存在函数重载,如果出现了,后者会把前者覆盖。而且函数声明会提升。
上一篇: 云计算营销能否成门企有力的营销模式?
下一篇: python 制作网站筛选工具(附源码)