JS中的注意点

一、JS数据类型

(1). NaN、Infinity、parseInt()、isNaN()

NaN: 表示一个非数字(当一个数学表达式运算结果本该返回个数字却没有返回
Infinity: 无穷大(除数是0时计算结果)
pareInt()函数: 将字符串转换成数字,且只取整数位(注意: 123.45啊啊 也可以取,但中文在前就不行
isNaN()函数: 返回布尔类型,验证是否为一个数字(特点,首先会尝试将"数据"转换成数字)

console.log(2/0)         //Infinity
console.log(0/0)         //NaN

console.log(parseInt('123.45str'))        //123
console.log(parseInt('str123.45'))        //NaN

isNaN(123)           //false
isNaN('123')         //false
isNaN('Hello')       //true
isNaN('2021/11/2')   //true

isNaN()      //true
isNaN("")    //false
isNaN(" ")   //false
isNaN(null)  //false

isNaN('NaN')  //true
isNaN(NaN)    //true

isNaN(0/0)    //true

(2). Boolean()函数

1、Boolean()函数:可将非布尔类型转换成布尔类型

2、在JS中if语句会自动调用Boolean()函数

这些值Boolean()都为false0,null,undefiend,"",false,NaN

Boolean(0)            //false
Boolean(null)         //false
Boolean(undefined)    //false
Boolean("")           //false
Boolean(NaN)          //false
Boolean(false)        //false

Boolean(3)            //true
Boolean(Infinity)     //true
Boolean("abc")        //true
Boolean(new Object()) //true

if("abc"){            //自动调用Boolean
  console.log("test")
}

(3). String

substr(startIndex,length) 和 substring(startIndex,endIndex) 之间的区别

substr(2,3):从数组下标2开始,取3个长度

substring(2,3):从数组下标2开始,取到下标3(并且最后一位不截取

console.log("abcdef".substr(2,3))    //cde
console.log("abcdef".substring(2,3)) //c

(4). Object

Object通用属性和方法

  属性:prototype | constructor

  方法:toLocaleString | toString | valueOf

  重要:

    1). prototype属性,可以给对象动态扩展属性和方法

var obj = new Object();
console.log(typeof obj)

//后期给Object类型的对象扩展一个doSome()方法
Object.prototype.doSome = function(){
    console.log("测试prototype属性!!!")
}

    2).defineProperty方法,可以给进行扩展、代理

let obj1 = {x:100}
let obj2 = {y:200}
					
Object.defineProperty(obj2,'x',{
	get(){
	  return obj1.x
	},
	set(value){
	  obj1.x = value
	}
})

(5). null NaN undefined 区别

  typeof null : 结果是Object

  三者类型不同,但是 null 和 undefined 的值可以等同

console.log(null === undefined);   //false
console.log(null == undefined);    //true

二、控制语句

for..in语句的使用:for(var x in arr)

1、若 arr 是数组,则 x 为数组下标 --> arr[x] 

2、若 arr 是对象,则 x 为对象属性 --> arr[x](属性名是字符串)

var arr = [true,"abc",5,false,76,3.14];
			
			//对普通数组进行for..in遍历: x就是数组下标
			for(var x in arr){
				console.log(x);
				console.log(arr[x]);
			}
			
			Employee = function(empno,ename){
				this.empno = empno;
				this.ename = ename;
			}
			var e = new Employee(7369,"SMITH")
			console.log(e.empno + "," + e.ename);
			console.log(e['empno'] + "," + e["ename"]);
			
			//for..in遍历对象的属性 --> x 就是对象的属性名,而且属性名是字符串
			for(var x in e){
				console.log(x);
				console.log(typeof x);      //String
				
				console.log(e[x]);          //正确的遍历属性值
				// console.log(e.empno + "," + e.ename);   //这种遍历方式就不成立了
			}

  3、注意理解 x in obj 对于对象中取值实质

			//if判断语句中看出,若 x in obj:若对象obj中没有属性x,则为false,有则为true
            if('liao' in {'liao':1}){
				alert({'liao':1}['liao'])    //1
			}

 

 三、JS内置对象

  1、Array

    创建数组:①.var arr = [];  ②.var arr = new Array()

    数组中元素类型可以不一样

    数组长度可变

    会自动扩容

var a = [];
console.log(a.length);        //0
			
var a1 = [3.14,true,"str"];   //JS中的数组元素类型可以不一致
console.log(a1.length);
			
//没有扩容之前: [3.14,true,"str"]
//a1[100]会导致自动扩容: [3.14,true,"str",1,2,3,4,5,..........]
//JS中数组没有下标越界这一说!,本就不是开始指定数组容量
a1[100] = 1234;
console.log("数组的长度为:" + a1.length);    //101
			
//另一种创建数组方式
var arr = new Array(0);    //创建数组长度为0的数组
var arr1 = new Array(3);   //创建数组长度为3的数组

  JS中数组对象常用方法: push,pop,join,reverse 等

//pop:弹出数组中元素,从数组末尾开始弹出
var array = [1,2,3];
console.log(array.pop());    //3
console.log(array.pop());    //2
console.log(array.pop());    //1
console.log(array);          //[]
//push:向数组中放入元素
console.log(array.push(1));  //1
console.log(array.push(2));  //2
console.log(array);          //(2) [1,2]
			
var array1 = [1,5,65,6,67];
//翻转数组
array1.reverse();
//遍历
for(var x in array1){
  console.log('@'+array1[x]);    //67,6,65,5,1
}
			
//连接(将数组中的每一个元素以"$"连接成一个字符串)
var str = array1.join("$")
console.log(str);          //67$6$65$5$1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值