JavaScript的数据类型以及转换,运算符

本文深入讲解JavaScript中的数据类型,包括基本数据类型如number、string、Boolean等,以及引用数据类型如object、array、function的特性与用法。同时,探讨了数据类型之间的转换规则和常见运算符的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

day02

js数据类型

  • 数据类型是弱类型,即最开始不知道变量是什么类型,必须通过后面的数值才能知道
  • js数据类型有两大类
    • 基本数据类型
      • number
      • string
      • Boolean
      • null 空
      • undefined 未定义
    • 引用数据类型(复合数据类型)
      • object
        • object
        • array
        • function
number
  • 就是数值
//整数
var a=1;
//小数
var b=2.5
//八进制  以0开头,并且没有超过8的数,就是八进制
var c=0101
//十六进制   以0x开头,就是十六进制:0-9 + a-f
var d=0xa
//typeof可以检测变量类型,有两种写法:typeof 变量名;typeof(变量名);
console.log(typeof 2+3);
//控制台显示:  number3
//因为在这里,+变成了连接符号
//可以写成下面:
console.log(typeof(2+3));
//这样会优先执行括号里的
console.log(0.1+0.2);//这里得到的结果并不是0.3

禁止使用小数运算去判断真假,因为极个别的小数计算结果会有偏差

string
  • 就是字符串,用单引号或者双引号引起来,只要放在引号里面,就都是字符串
var a='123'
var a='qwertYuii'
var a='李峥是个仙^(* ̄(oo) ̄)^'
//相同的变量名,后面的会覆盖前面的
  • 字符串中有一个数量:length,它用来获取字符串的长度。语法:变量名.length
var a='qwertyuioplk';
console.log(s.length);//12
//获取字符串某一个字符,从0开始
console.log(a.chareAt[0]);//q
//[0]是索引值,从0开始,必须是整数
Boolean(布尔,true false)
  • 非假既真,真为true-1,假为false-0
if(10>20){
	console.log(true);
}
null
  • null表示空值,但是控制台显示的是object
console.log(typeof null);//object
undefined
  • 标识变量还没有初始化,未定义
var a;
console.log(a);  //undefined

object

  • 复合类型中有:object array function
object
  • 万物皆对象,页面中获取的所有元素标签都是对象类型
console.log(typeof document);  //object
console.log(typeof window);  //object
  • 声明对象

    • 空对象:

      var obj={}   //这就是一个空对象
      
    • 通过关键字new实例化对象

      var obj=new Object();
      console.log(typeof obj);  //object
      
    • 直接声明对象

      var obj={name:"lizheng",age:18,sex:"女"}
      //查看变量类型
      console.log(typeof obj);//object
      //获取属性值
      console.log(obj.name);  //lizheng
      //改变属性的值
      console.log(obj.name="zhutou");
      //增加属性值
      console.log(obj.emile="www@.com");
      

      在object数据类型中,存储值时,通过键值对的形式存储的(name:"lizheng"),其中name为键名(属性名),"lizheng"为键值(属性值)。

array
  • 数组可以将多个数据存储到一块,数组里面没有类型限制

  • 声明数组的方法

    • 用new关键字实例化

      var arr=new Array();
      
    • var 变量名=[]

      var arr=[]; //这是一个空数组
      var arr1=[1,'fd',[1,23],{"name":"lizheng"}];
      //查看它的变量类型
      console.log(typeof arr1);   //object
      //获取元素个数,长度
      console.log(arr1.length);//4
      //通过下标获取某个具体数据,下标从0开始
      console.log(arr1[2]);//1,23
      //改变数据内容
      arr1[1]=123;
      //插入数据
      arr1[10]="wowowow";
      console.log(arr);
      //结果:[123,'fd',Array(2),{...},empty*5,"wowowow"]
      arr1.push("111");
      //会直接加载arr1[10]的后面
      

      数组允许通过下标插入数据,允许数组当中某些下标为空

      push往数组末尾添加元素

function
  • 声明函数

    • 匿名函数:function(){ }

    • 命名函数:function 函数名(){ }

      1:
      function fun(){
      }
      console.log(typeof fun);  //function
      2:
      function fun(){
      	console.log(fun);//下面调用几次这里就会执行几次
      }
      fun();//调用fun();//调用fun();//调用
      

数据类型的强制转换

转数值类型方法一:Number() 返回一个新的值,不会改变变量原有的值
  • 语法:Number()

    • string转换为number

    • console.log(Number(’’)); //0

    • console.log(Number(‘123’)); //123

    • console.log(Number(‘123asd’)); //NaN

    • console.log(typeof NaN); //number

    • console.log(Number(‘0.1.2’)); //NaN

    • console.log(Number(‘0.12’)); //0.12

    • console.log(Number(’.12’)); //0.12

    • console.log(Number(‘QQ123’)); //NaN

      字符串转数值,空的转为0,纯数字的转成对应的数值,可以识别一位小数点而且必须是纯数字,其他的全部转成NaN

    • Boolean转换为number

    • console.log(Number(true)); //1

    • console.log(Number(flase)); //0

    • null转换为number

    • console.log(Number(null)); //0

    • undefined转换为number

    • console.log(Number(undefined)); //NaN

    • console.log(NaN == NaN); //flase 不知道是什么成为的NaN

    • console.log(1 == ‘1’); //true 隐式类型转换

    • console.log(1 == true); // true

    • console.log(null == ‘’); // false

    • console.log(’’ == 0); // true

    • console.log(0 == null); //false

    • 隐式转换,有和数值比较的其他类型,会把别的类型转换为数值的

      JS规定:null和undefined属于无值类型,谁和他俩比较都是Flase,只有自己和自己比较的时候是true

转数值类型方法二:parseInt() 整型
  • 识别字符串里以数字开头的连续性的值转成对应的值
    • console.log(parseInt(‘123’));//123
    • console.log(parseInt(‘123.234’)) ; //123
    • console.log(parseInt(‘123asd’)) ; //123
    • console.log(parseInt(‘0123asd’)) ; // 123
    • console.log(parseInt(‘0.123asd’)) ; // 0
转数值类型方法三:parseFloat() 浮点型
  • 识别字符串里以数字开头的连续性的值,可以识别一个小数点
    • console.log(parseFloat(‘123’)) ; //123
    • console.log(parseFloat(‘0.as123’)); //0
    • console.log(parseFloat(‘a0.as123’)); // NaN
其他:isNaN 不是一个数值,是数字就返回false,不是数字就返回true
  • console.log(isNaN(‘123q’)) //true
其他类型转换为字符串
  • String(要转换的对象)

    • console.log(String(123)); //‘123’

      console.log(typeof String(123)); //string

    • console.log(String(true)); //‘true’ ‘false’

    • console.log(String(null)); //‘null’

    • console.log(String(undefined)); // undefined

    • var arr = [1,‘a’,[‘asd’]];

      var str = String(arr)

      console.log(typeof str); // ‘1,a,asd’

    • // var obj = {“name”:“ujiuye123”}

    • // var obj = {“name”:“ujiuye123”,“age”:“12”}

    • var obj = {};

    • var str1 = String(obj) // [object object]

    • console.log(str1)

    • console.log(str1.length)

    • console.log(typeof str1)

      对象(object)不可以转换为字符串,其他的都可以

  • 要转换对象.toString()

    • var x = 234;

      console.log(x.toString());

    • var y = 13;

      console.log(y.toString()); // ‘2’

      console.log(y.toString(16)); // b

      toString()中,括号里面写的是2-36的数值,写多少就可以转换为几进制

运算符

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 三目运算符(三元运算符)
算术运算符(+ ,- ,* ,/ ,% ,++ ,–)
    • console.log(1+2); //3

    • console.log(1+‘a’); //1a

      这里需要注意,当加号后面不是数值的时候,加号就会变成连接符

  • 减号、乘号,除号,取余就是一般的,嗯,没啥注意的吧

  • –(自减)和++(自增)

    • 他有放在前面和放在后面两种

      • 放在前:先运算再赋值
      • 放在后:先赋值再运算
    • var x=3;

      var y=x++;

      console.log(x,y); //4,3

      因为++在后面,所以先赋值再自增

    • var x=5;

      var y=–x;

      console.log(x,y); //4,4

      因为–在前面,所以先自减再赋值

  • / 0也可以计算

    • console.log(10/0); //Infinity 无穷
    • console.log(0/0); //NaN
  • 加减乘除取余都可以隐式转换

赋值运算符(==,+=,-=,*=、/=)
  • x+=2 ----> x=x+2
  • x-=10 ----> x=x-10

比较运算符(== , < , > , <= , >= , != , === , ! ==)

  • console.log(10 == ‘10’); //true

  • console.log(10 != ‘10’); //false

  • console.log(10 === ‘10’); //false

  • console.log(10 !== ‘10’); //true

  • ’ == ‘只比较数据的大小,’ = = = '比较的不仅是数据的大小,还有数据类型是否一样

  • console.log(’’ == ‘’); //true

  • console.log([] == []); //flase

    • []和[]的地址不一定相同。

    • 浅拷贝

    • var arr=[1,2];

      var arr2=arr;

      arr2[2]=4;

      console.log(arr); //[1,2,4]

      arr和arr2是公用的同一个地址,所以arr2改变数组内容,arr中也会改变

      console.log(arr=arr2); //true

逻辑运算符(与&&或||非!)一般用在流程控制条件判断中
  • 空为假,非空为真

  • 0为假1为真

  • var str=’’;

    console.log(str); //false

三目运算符(三元运算符)

  • 条件?语句一:语句二;

  • 如果条件成立就执行?后面的语句,如果条件不成立就执行:后面的。

  • var s=10;

    s<0 ? n=10 :n=0;

    console.log(n); //0

运算符的优先级:

()>!>算术运算>比较运算>逻辑运算

typeof返回那些字符串?

  • number
  • string
  • boolean
  • undefined
  • object
  • function
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值