美文网首页
03-JavaScript数据类型

03-JavaScript数据类型

作者: 喝酸奶要舔盖__ | 来源:发表于2018-11-05 09:02 被阅读0次

JavaScript数据类型

  • 在JS中一共有六种数据类型
    • String 字符串(基本数据类型)
    • Number 数值(基本数据类型)
    • Boolean 布尔值(基本数据类型)
    • Null 空值(基本数据类型)
    • Undefined 未定义(基本数据类型)
    • Object 对象(引用数据类型)
  • 使用typeof查看数据类型
    • typeof操作符会将检查的结果以字符串的形式返回给我们
var num = 10.3
console.log(typeof num);

字符串类型

  • 在JS中用单引号或者双引号括起来的都是字符串, 没有C语言中char和字符串的概念

注意点:
在JS中单引号双引号可以嵌套
不同类型可以嵌套, 相同类型不能嵌套

var str3 = "hello "nj""; // 错误
var str4 = `hello `nj``; // 错误
var str5 = "hello 'nj'"; // 正确
var str6 = `hello "nj"`;// 正确

Number类型

  • 在JS中所有的数字类型都统称为Number类型, 没有C语言中int/float/double的概念
  • 由于内存的限制,ECMAScript 并不能保存世界上所有的数值
    • 最大值:Number.MAX_VALUE
    console.log(Number.MAX_VALUE);  // 1.7976931348623157e+308
    
    • 最小值:Number.MIN_VALUE
    console.log(Number.MIN_VALUE);  // 5e-324
    
    • 无穷大:Infinity, 如果超过了最大值就会返回该值
    console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity
    
    • 无穷小:-Infinity, 如果超过了最小值就会返回该值
    • NaN 非法数字(Not A Number),JS中当对数值进行计算时没有结果返回,则返回NaN
    var num3 = NaN;
    console.log(typeof num3); // number
    

Number类型注意点
JS中整数的运算可以保证精确的结果
在JS中浮点数的运算可能得到一个不精确的结果

Boolean 布尔值

  • 布尔型只能够取真(true)和假(false)两种数值
  • 虽然Boolean 类型的字面值只有两个,但 ECMAScript 中所有类型的值都有与这两个 Boolean 值等价的值
    • 任何非零数值都是true, 包括正负无穷大, 只有0和NaN是false
    • 任何非空字符串都是true, 只有空字符串是false
    • 任何对象都是true, 只有null和undefined是false
var bool3 = Boolean(0);
console.log(bool3); // false
var bool4 = Boolean(1);
console.log(bool4); // true
var bool5 = Boolean(-1);
console.log(bool4); // true
var bool6 = Boolean(Infinity);
console.log(bool4); // true
var bool7 = Boolean(-Infinity);
console.log(bool4); // true
var bool8 = Boolean(NaN);
console.log(bool8); // false
var bool9 = Boolean(undefined);
console.log(bool8); // false
var bool10 = Boolean(null);
console.log(bool8); // false
var bool11 = Boolean("");
console.log(bool8); // false
var bool12 = Boolean("abc");
console.log(bool12); // true

Null和Undefined

  • Undefined这是一种比较特殊的类型,表示变量未赋值,这种类型只有一种值就是undefined
  • undefined是Undefined类型的字面量
    • 前者undefined和10, "abc"一样是一个常量
    • 后者Undefined和Number,Boolean一样是一个数据类型
    • 需要注意的是typeof对没有初始化和没有声明的变量都会返回undefined。
var value1 = undefined;
console.log(typeof value); //结果是undefined

var value2;
console.log(typeof  value2); //结果是undefined
  • Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null
  • 从语义上看null表示的是一个空的对象。所以使用typeof检查null会返回一个Object
  • undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true
var test1 = null;
var test2 = undefined;
console.log(test1 == test2);
console.log(test1 === test2);

转换为字符串类型

  • 对于Number类型和Boolean类型来说, 直接利用变量调用toString()方法
    • toString()方法会将调用者转换为字符串, 并且会将转换后的结果返回给我们并且不会修改调用者原有的值
var num = 123
console.log(num.toString());
console.log(typeof num.toString());
var flag = true;
console.log(flag.toString());
console.log(typeof flag.toString());
  • toString()方法是可以接收参数的, 参数代表告诉解析引擎, 需要将Number类型转换为多少进制
    • toString(2) 代表需要将调用者转换为2进制
    • toString(8) 代表需要将调用者转换为8进制
    • toString(16) 代表需要将调用者转换为16进制
var num = 10;
console.log(num.toString(2));//转换为2进制
console.log(num.toString(8));//转换为8进制
console.log(num.toString(16));//转换为16进制
  • 利用toString()方法不能将null, undefined转换为字符串,但是可以使用String()函数
    • String()函数还可以将Number/Boolean/null/undefined转换为字符串
var n = null;
var u = undefined;
console.log(String(n));
console.log(String(u));
  • 利用算数运算符的加法运算来转换, 可以Number/Boolean/null/undefined转换为字符串
    • 任何类型和字符串相加, 都会先转换为字符串之后再相加
var res1 = 10 + "";
console.log(res1);

var res2 = true + "";
console.log(res2);

var res3 = null + "";
console.log(res3);
console.log(typeof res3);

var res4 = undefined + "";
console.log(res4);
console.log(typeof res4);

转换为Number类型

  • (第一种方式)利用Number()函数可以将其他数据类型转换为Number类型
var str = "123";
var res1 = Number(str);
console.log(res1);
  • 字符串转换Number类型
    如果字符串中都是数字, 那么就正常转换
    如果字符串中不仅仅有数字, 那么转换为NaN
    如果字符串中没有内容"" "空格", 那么就转换为0
var str2 = "3.14aa";
var res2 = Number(str2);
console.log(res2);

var res6 = Number("");
console.log(res6);

var res7 = Number("  ");
console.log(res7);
  • 布尔类型转换Number类型
    true转换为1, false转换为0
var flag = true;
var res3 = Number(flag);
console.log(res3);
  • null和undefined转换为Number类型
    对于null: 转换为0
    对于undefined: 转换为NaN
var n = null;
var i = undefined;
var res4 = Number(n);
console.log(res4); //0
console.log(typeof res4);
var res5 = Number(i);
console.log(res5); //NaN
console.log(typeof res5);
  • (第二种方式)利用算数运算符来转换在需要转换的类型前面加上+加号或者-减号即可

注意点:
+加号不会改变数据的正负性
-减号会改变数据的正负性

    var str1 = "123";
    var str2 = "-3.14";
    var flag1 = true;
    var flag2 = false;
    var n = null;
    var u = undefined;

    var res1 = +str1;
    console.log(res1);
    console.log(typeof res1);

    var res2 = -str2;
    console.log(res2);
    console.log(typeof res2);

    var res3 = +flag1;
    console.log(res3);
    console.log(typeof res3);

    var res4 = +flag2;
    console.log(res4);
    console.log(typeof res4);

    var res5 = +n;
    console.log(res5);
    console.log(typeof res5);

    var res6 = +u;
    console.log(res6);
    console.log(typeof res6);
  • (第三种方式)复杂的字符串通过parseInt()/parseFloat()函数转换为Number类型
    parseInt: 只能提取整数
    parseFloat: 可以提取小数

注意点:
parseInt/parseFloat , 会从左至右的提取, 一旦被中断后续的就提取不到了
对于parseFloat来说, 只能提取一个小数点, 第二个小数点会被中断

    var str = "3.14px";
    var res = Number(str);
    console.log(res);//NaN

    var str2 = "3.1410px20px";
    var res2 = parseInt(str2);
    console.log(res2);

    var str3 = "3.14.15px";
    var res3 = parseFloat(str3);
    console.log(res3);

转换为Boolean类型

  • 字符串转换为Boolean类型
    只要是空字符串(没有任何内容), 都会转换为false
    只要字符串中有内容(包含空格/Table), 都会转换为true
    var str1 = '';
    var str2 = ' ';
    var str3 = '123';
    var res1 = Boolean(str1);
    console.log(res1);
    var res2 = Boolean(str2);
    console.log(res2);
    var res3 = Boolean(str3);
    console.log(res3);
  • Number类型转换为Boolean类型
    只要不是0都会转换为true, 只有0会转换为false
    var num = 0;
    var num2 = -1;
    console.log(Boolean(num));
    console.log(Boolean(num2));
  • null和undefined转换为Boolean类型
    对于null和undefined而言, 都会转换为false
    var n = null;
    var u = undefined;
    console.log(Boolean(n));
    console.log(Boolean(u));
  • NaN转换为Boolean类型也会转换为false
    var num3 = NaN;
    var res4 = Boolean(num3);
    console.log(res4);

总结:
"" / 0 / null / undefined / NaN --> false

相关文章

  • 03-JavaScript数据类型

    JavaScript数据类型 在JS中一共有六种数据类型String 字符串(基本数据类型)Number 数值(基...

  • 03-JavaScript基础—数据类型

    文章配套视频 http://study.163.com/course/courseMain.htm?courseI...

  • 03-JavaScript基础-数据及数据类型

    什么是数据? 生活中时时刻刻都在跟数据打交道,比如体重数据、血压数据、股票数据等。在我们使用计算机的过程中,会接触...

  • 03-JavaScript基本语法

    变量 会变化的量,是用来存储数据的容器。 命名规范:可以由数字、字母、下划线、$组成,不能以数字开头;严格区分大小...

  • 03-javascript基础学习笔记

    1. js的内置样式### 仅作为了解: 按钮 2. 全选/全不选/反选### input.checked=!in...

  • 03-JavaScript运算符

    JavaScript运算符 和数学的运算符一样,JavaScript中的运算符是告诉程序执行特定算术或逻辑操作的符...

  • python学习笔记-前端基础03-JavaScript

    JavaScript是运行在浏览器的脚本语言,是由浏览器解释执行的,简称js,它能够让网页与用户有交互功能,增加良...

  • JAVA 之路第一讲

    数据类型: 基础数据类型 包装器数据类型 引用数据类型 null 数据类型 基础数据类型: 整型 byte(字节型...

  • php 数据类型和数据类型转化

    一、数据类型 基础数据类型 复合数据类型 特殊数据类型 二、获取数据类型 三、打印数据类型和值 四、数据类型判断 ...

  • OC和C中的数据类型

    数据类型对比 C语言数据类型C语言数据类型 OC数据类型

网友评论

      本文标题:03-JavaScript数据类型

      本文链接:https://www.haomeiwen.com/subject/jnudxqtx.html