JavaScript数据

JavaScript数据类型

1. typeof 运算符

  • 在js代码运行过程中动态获取变量的数据类型
  • 格式: typeof 变量名
  • 运算结果:undefined 、 number 、 string 、 boolean 、 object 、 function
  • js中判断字符串是否相等使用 == 运算符

2. Undefined

只有一个值:undefined;当一个变量声明后却没有赋值,系统默认赋值undefined

3. Number

  • 包括:1,0,-1,3.14,NaN【Not a Number】,Infinity【无穷大】等
  • NaN:当一个数学表达式本应返回一个数字,但最终无法返回一个数字时,结果为NaN。如: var number = 1 / "zhangsan";
  • Infinity:当除数为0时,计算结果是无穷大。如: var number = 1 / 0;
  • isNaN()函数:返回true表示不是一个数字,返回false表示是一个数字。会尝试将变量参数转换成数字,转换成功返回false,转换失败返回true,如 isNaN(true) 返回false
  • Number()函数:将不是数字类型的数据转换成数字类型的数据,如 Number("123") ;如果转换不了数字,则返回NaN
  • parseInt()函数:将数字字符串转换成数字,并只取整数部分,如: var num = "123.12"; console.log(parseInt(num)); , 对于字符串"123.12中国"仍旧可以提取出整数部分123,但对于字符串中国123.12则返回NaN
  • ceil()函数:js内置的数学类Math中的一个函数,可以实现向上取整,如 console.log(Math.ceil(123.456)); ,结果返回124
  • 10 / 3:结果是3.3333333333333335

4. String

  • 定义字符串1:var str = "xxx"; 其数据类型是String
  • 定义字符串2:var str = new String("xxx"); 其数据类型是Object
  • 常用属性length:返回字符串的长度。如 console.log("abc".length);
  • charAt()方法:获取指定下标位置的字符,如 console.log("http".charAt(3)); 返回结果是 p
  • concat()方法:连接字符串,如 console.log("abc".concat("def")); 返回结果是 abcdef
  • indexOf()方法:获取某个字符串在当前字符串中第一次出现处的索引console.log("hello".indexOf(l));,返回结果是 2
  • lastIndexOf()方法:获取某个字符串在当前字符串中最后一次出现处的索引console.log("hello".lastIndexOf(l));,返回结果是 3
  • replace()方法:替换,如 console.log("hello-java-script".replace("-",","));,返回结果是 hello,java-script。这里只能替换第一个字符,要替换所有需要使用正则表达式
  • split()方法:拆分字符串,返回一个数组。如 var arr = "hello-java-script".split("-");,并遍历数组:for (var i = 0 ; i < arr.length ; ++i) { console.log(arr[i]); }
  • substr(startIndex ,length)方法:截取字符串,只有一个参数时和下面函数功能一致
  • substring(startIndex,endIndex)方法:截取字符串,注意不包括endIndex
  • toLowerCase()方法:转小写
  • toUpperCase()方法:转大写

5. Boolean

  • 只有两个值:true和false
  • Boolean()函数:将不是布尔类型的数据转换成布尔类型。转换规则:空字符串为false,NaN为false,null为false,undefined为false;对象object为true,无穷Infinity为true【只要有东西,结果即为true】

6. Null

只有一个值:null; 注意typeof null 运算结果是 object

7. Object[引用数据类型 / 对象类型]

  • object类:所有类型的超类 / 基类,是js中默认定义的类型,没有特殊说明时默认继承object
  • prototype属性【翻译为原型】:可以动态给对象扩展属性和方法
<script>
    var obj = new Object();                 /*创建对象*/

    Object.prototype.fun = function () {    /*给Object类型的对象动态增加方法*/
        console.log("调用fun函数");
    };
    Object.prototype.username = "zhangsan"; /*给Object类型的对象动态增加属性*/
    obj.fun();                                  /*结果:调用fun函数*/
    console.log(obj.username);              /*结果:zhangsan*/
</script>
  • 创建类的格式1:function 类名 (形式参数列表) { this.属性名 = 参数; this.方法名 = function(){ ... } }
  • 创建类的格式2:类名 = function (形式参数列表) { this.属性名 = 参数; this.方法名 = function(){ ... } }
  • 创建类的格式和创建函数的格式其实是一样的,区别是函数还是类关键看调用方式,函数的调用 fun(); , 而类的调用 var obj = new fun();,使用new会导致浏览器的堆中开辟一个新对象
<script>
    /*定义一个学生类*/
    Student = function (name , age , id) {
        this.name = name;
        this.age = age;
        this.id = id;
        this.study = function () {
            console.log(this.name + "正在学习");
        }
    };
    /*创建学生对象*/
    var stu = new Student("zhangsan" , 11 , 123);
    /*调用学生stu的方法*/
    stu.study();
    /*访问对象的属性方式1*/
    console.log(stu.id)
    /*访问对象的属性方式2*/
    console.log(stu["id"])
</script>

8. ES6之后引入了其它新的数据类型【Symbol和BigInt】

9. == 和 === 运算符

  • == 称为 等同运算符,只比较值是否相等
  • === 称为全等运算符,既比较值是否相等,也比较数据类型是否相等

10. null、NaN和undefined的区别

  • null是原始类型(基本数据类型),typeof运算的类型是object
  • NaN的数据类型是Number
  • undefined的数据类型是Undefined
  • NaN == null 和 NaN == undefined 的结果都是false,但 null == undefined 的结果是true,即null和undefined是等同关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值