JS 第二天

108 阅读3分钟

数据类型之间的转换

之前我们学的知识基本数据类型之间的转换

那如果带有引用数据类型呢?

引用数据类型之数组简单了解

  • 用中括号([])包含以逗号分隔的元素列表
  • 数组是特殊的对象:

1.它的属性名是数字,数字从零开始,逐级递增,每一个数字代表着当前项的位置 =>我们把这种数字属性名叫做“索引”

2.默认有一个length属性存储数组的长度

let arr = [10, 20, 30];
console.log(arr[0], arr[1], arr[2]);
console.log(arr.length);
console.log(arr['length']);

Number()

  • 对象转换为数字:先把对象转换为字符串,再把字符串转为数字
  • 普通对象

  • 数组对象

普通对象转化为数字类型

Number({}); 先{}转化为字符串,"[objecy Object]"===>NAN

Numbeer([]);=>0  []==>""==>0
Numbeer([1]);[1]==>"1"==>1
Numbeer([1,2,3]);[1,2,3]==>"1,2,3"==>NAN

String();

特殊

只要是普通对象{},转化为字符串就是"[Object object]"
String({name:lili});===>"[Object object]"
String({}); ===>"[Object object]"

String([1,2,3]);===>"1,2,3"
String([1,2,3,4,5,6,7]);===>"1,2,3,4,5,6,7"
String([1]);===>"1"
String([]);===>""

数组对象转化为数字类型

/*
* 1.先把arr转换为字符串: "10"
* 2.在把"10"转换为数字:10
*/
let arr = ["10"];
console.log(Number(arr)); //=>10
/*
 * 1.先把ARR转换为字符串: "10,20"
 * 2.在把"10,20"转换为数字:NaN
 */
arr = ["10", "20"];
console.log(Number(arr)); //=>NaN

console.log(Number([])); //=>  []->''  Number('')->0
console.log(Number(['AA'])); //=> ['AA']->'AA'  Number('AA')->NaN

数据类型检测

  • typeof
  • instanceof
  • constructor
  • Object.prototype.toString.call()

typeof

var res1 = typeof 100;
var res2 = typeof "今天是个好日子”;
var res3 = typeof true;
var res4 = typeof null;
var res5 = typeof undefiend;
var res6 = typeof Symbol;
var res7 = typeof 10n;
var res8 = typeof {};
var res9 = typeof [];

console.log(res1,res2,res3,res4,res5,res6,res7,res8,res9,);
数据类型:nmber,String,boolean,Object,undefiend,symbol,bigint,object,obbect

## typeof缺点
1.不能识别null
  原因:所有的计算机都是二进制储存的,当你储存的前三位是000时,就会被识别为对象,null是全部都是0
  
2.不能细分对象(分不清普通对象和数组对象)

面试题

typeof []==>"object"
typeof typeof []==>typeof "object"==>"string"
typepf typeof typeof []==>"string"
typeof typepf typeof typeof []==>"string"

基础代码调试

1.如果要输出多个,用逗号隔开  调试代码的方式
console.log(111,222);
2.详细输出,一次只能输出一个
console.dir111)|
3.弹框  会阻塞代码执行
需要等到alert弹出框,点击确定关闭后,后面的代码才会继续执行
如果弹窗的内容不是字符串,会转化为字符串
alert(111);
alert({});
alert([]);

4.提示框 如果点击的是确定结果为true,取消就是flase
comsole.log(confirm("你想删除这条数据吗"));

5.输入框 点击确定输入啥值就是啥,点击取消就是null
console.log(prompt("你是boy还是girl?"));

获取属性值的获取   

对象的属性名一般都是字符串格式(还可以是数字格式),属性值可以是任意类型数据
●对象.属性名;

●对象['属性名'];

var obj={
   "name":"lili",
   "age":18
}

console.log(obj.name);
console.log(obj["name"])
<script>
      //对象  引用数据类型
      //Object (普通对象)
      //对象俗称理解就是在这个里面把多个信息正整合
      //用大括号包裹,里面成对出现,俗称键值对,如果要多对出现用逗号隔开
      //{"属性名:“属性值"}
      var dongdong={age:22,sex:1,bobby:睡觉}
      var age=20;
      var sex=1;
      var hobby="睡觉";

      //对象的增删改查
      //查:
     //    第一种:对象.属性名
       var info=dongdong.age;
       console.log(dongdong.age);
       console.log(info);
      //    第二种:对象["属性名"] ,一定要带引号,否则就是变量
      //          注意:如果属性名是数字,不能用点属性名要用中括号
      var info2=dongdong["age"];
      comsole.log(info2);

     //新增和修改
     //如果属性名已经存在,那就是修改,如果没有就是新增,有则修改,无则增加

     var dongdong={age:22,sex:1,bobby:睡觉}

     // 删除
     //1.对象.属性名=null
     //2.delete 对象.属性名
     var dongdong={age:22,sex:1,bobby:睡觉}
     dongdong.age=null;//假删除
     
     delete  dongdong.age;//真删除
   </script>