知识点一:自动转换的判断题
<script type="application/javascript">
function test() {
console.log('' == '0') //类型相同,比较值,值不同,所以false
console.log(0 == '') //类型不同,String转Number,空字符串转为0,变成0==0,所以true
console.log(0 == '0') //类型不同,String转Number,'0'转成0,变成0==0,所以true
console.log(false == 'false') //类型不同,Boolean转Number,即0=='false',然后'false'转Number,为0==NaN,所以false
console.log(false == '0') //类型不同,Boolean转Number,即0=='0',就变成第3个例子,所以true
console.log(false == undefined) //对于undefined和null,只有它们本身两个比较才是true,其他都是false,所以false
console.log(false == null) //对于undefined和null,只有它们本身两个比较才是true,其他都是false,所以false
console.log(null == undefined) //对于undefined和null,只有它们本身两个比较才是true,其他都是false,所以true
console.log(true == 2) //类型不同,Boolen转Number,即1==2,所以false
console.log(NaN == NaN) //NaN非常特殊,和自身也不相等,所以false
console.log(' \t\r\n ' == 0) //类型不同,String转Number,空String都将转成0,即0==0,所以true
console.log(0 == []) //对象类型[]调用toString()转为"",即0=="",即0==0,所以true
console.log(0 == ['']) //对象类型['']调用toString()转为"",即0=="",即0==0,所以true
console.log('0' == []) //对象类型[]调用toString()转为"",即'0'=="",类型相同,值不同,所以false
console.log('0' == [0]) //对象类型[0]调用toString()转为"0",即'0'=="0",类型相同,值也相同,所以true
console.log(true == [1]) //对象类型[1]调用toString()转为"1",即1=="1",转1==1,所以true
console.log([] == []) //对象类型,比较引用地址,两个[]是不同的引用地址,所以false
console.log(![] == []) //加!强制转Boolean,任何对象都是true,取反即false==[],转为0=="",即0==0,所以true
console.log(!{} == {}) //即false=={},转为false=="[object Object]",即0==NaN,所以false
}
test();
</script>
总结:
1.==符号在判断左右两边数据是否相等时,如果数据类型一致,直接比较值即可
2.==符号左右数据类型不一致时,如果两方数据为布尔型、数值型、字符串型时,不为数字的那一方自动调用Number()方法
3.undefined和null这两者互相相等,及自身也相等,除此之外和谁都不想等
4.NaN比较特殊,他和自己都不相等
5.当数值型、字符串型、布尔型和对象进行比较时,对象调用toString()方法得到一个字符串
6.对象和对象进行比较时,直接比较内存地址
7.任何对象加!强制转false
知识点二:数组
<script type="text/javascript">
//一、创建数组
//1.创建空数组
var arr = new Array();
console.log(arr.length);
//2.创建具有长度的数组
var arr2 = new Array(10);
console.log(arr2)
//3.创建一个带元素的数组
var arr3 = new Array(123, true, "hello", new Date());
//4.创建一个带元素的数组2
var arr4 = [123];
console.log(arr4.length)
//二、属性
// length属性:表示数组的长度
console.log(arr3);
arr3.length = 0; //清空数组
console.log(arr3);
arr3.length = 4;
console.log(arr3);
//三、方法
var arrdemo = new Array(123, true, "hello", new Date(), 444333);
//join():指定一个字符,用该字符连接数组的每一个元素,并作为一个字符串返回
var result = arrdemo.join("-");
console.log(result);
//push():向数组的末尾添加一个元素,返回数组的新长度
result = arrdemo.push("world");
console.log(result)
console.log(arrdemo);
//pop():从数组末尾取出一个元素,并返回该元素本身
result = arrdemo.pop();
console.log(result);
console.log(arrdemo);
//shift():从数组头部取出一个元素,并返回该元素本身
result = arrdemo.shift();
console.log(result);
console.log(arrdemo);
//unshift():向数组的头部添加一个元素,返回数组的新长度
result = arrdemo.unshift("bbb");
console.log(result);
console.log(arrdemo);
//concat():拼接数组,并作为一个新的数组返回
var a1 = [123, 234];
var a2 = ["aaa", "bbb"];
var a3 = [new Date()];
var newarr = a1.concat(a2, a3);
console.log(newarr);
//reverse():反转数组
newarr.reverse();
console.log(newarr);
//sort():自然顺序
// var sortarr = [4534,22,66,88,123];
var sortarr = [4534, 22, 66, 88, 123, "A", "a", "ab", "ba", "abc", "bac"];
sortarr.sort()
console.log(sortarr);
//splice():删除指定位置,指定长度的元素,并在该位置添加新的元素
var s1 = ["aa", 'kjsdhf', '123', 123, 123, 444, 555, 666];
s1.splice(0,0,"laowang");
console.log(s1);
//slice();截取子数组
var s2 = s1.slice(3,5);
console.log(s2);
</script>
其他小知识:
1.如果script标签引入了一个js文件,那么就不能在script标签中间添加任何js代码
2.6种常用的数据类型,查看变量的数据类型使用typeof
1.undefined 声明一个变量并没有为其赋值
2.null 声明一个变量,并为其赋值为null
3.boolean 声明一个变量,为其赋值为ture或false
4.string 声明一个变量,为其赋值为字符串(单引号和双引号都可以)
5.number 数值型 1.整型 、 2.浮点型 、 3.正负无穷大 、
4.NaN = Not a Number
6.object 对象型
网友评论