IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript数据类型转换的学习(学习日记三) -> 正文阅读

[JavaScript知识库]JavaScript数据类型转换的学习(学习日记三)

一、概述

JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值。 虽然变量的数据类型是不确定的,但是各种运算符对数据类型是有要求的。如果运算符发现,运算子的类型与预期不符,就会自动转换类型。什么是字符串?如何手动强制转换数据类型?

二、字符串

?????????一、定义
? ? ? ? ? ? ? ? - 字符串就是零个或多个排在一起的字符,放在单引号或者双引号之中。
? ? ? ? ? ? ? ? - 单引号字符串内部可以使用双引号,双引号字符串内部可以使用单引号。
? ? ? ? ? ? ? ? - 如果要在单引号字符串内部使用单引号,就必须在内部的单引号前面加上转义符(反斜杠\),一个符号一个反斜杠。
? ? ? ? ? ? ? ? - 字符串默认写在一行,分成多行就会报错。
? ? ? ? ? ? ? ? - 连接运算符(+)可以连接多个单行字符串,可以多行书写,但输出的时候是单行(或长字符串必须分成多行,可以在每一行的尾部使用反斜杠。 )

????????二、字符串和数组
? ? ? ? ? ? ? ? - 字符串可以被视为字符数组,可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)
? ? ? ? ? ? ? ? - 如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined
? ? ? ? ? ? ? ? - 字符串与数组只能实现查看,无法改变字符串之中的单个字符,即增删改不行

????????三、length属性
? ? ? ? ? ? ? ? - length属性返回字符串的长度,该属性无法修改(用于查看字符串的长度)
? ? ? ? ? ? ? ? - 变量名.length

补充:如何区分方法和属性(带有小括号的是方法,没有括号的是属性)

var str1 = "a'b'c";
        console.log(str1);
        var str2 = 'a"b"c';
        console.log(str2);
//想在单引号里加单引号或者其他符号,就在该符号前加\
        var str3 = 'I\'m from \'China\'';
        console.log(str3);
//想多行写用加法运算符连接
        var longString = 'I'
        + 'am'
        + 'from'
        + 'China';
        console.log(longString);//IamfromChina
//或用反斜杠连接
        var longString = 'Long \
        long \
        long \
        string';
        console.log(longString);// "Long long long string"
//字符串应用数组的性质
        var c = 'very good!';
        console.log(c[0]);// v
        console.log(c[2]);// r
        console.log(c[4]);// 空格
        console.log(c.length);//10
//尝试用数组的修改,发现不能实现,所以字符串不能实现数组的增删改
        delete c[2];
        console.log(c);
        c[0] = 'B';
        console.log(c);
//如果方括号中的数字超过字符串的长度,则返回undefined
        console.log('abc'[7]);// undefined
//或者方括号中根本不是数字,则返回undefined
        console.log('abc'['x']);// undefined
        console.log('hello'[1]);

三、强制转换

? ? ? ? 1、Number():使用Number函数或者方法,可以将任意类型的值转化为数值

? ? ? ? ? ? ? ? -字符串如果可以被解析为数值,则转换为相应数值,不能被解析则返回NaN,只要有字母等乱码哪怕有数字也不会被解析。

? ? ? ? ?2、String():使用String函数,可以将任意类型的值转化成字符串【或者变量名.toString()】

????????3、Boolean():Boolean函数,以将任意类型的值转化成布尔值,除了以下五个值的转换结果为false,其它的值全部为true
? ? ? ? ? ? ? ? ? ? - undefined
? ? ? ? ? ? ? ? ? ? - null
? ? ? ? ? ? ? ? ? ? - 0(包含-0和+0)
? ? ? ? ? ? ? ? ? ? - NaN
? ? ? ? ? ? ? ? ? ? - ''(空字符串)

四、自动转换
? ? ? ? ? ? ? ?

概念:自动转换是以强制转换为基础的,遇到以下三种情况的时候,JavaScript会自动转换数据类型,即转换是自动完成的,用户看不见
? ? ? ? ? ? ? ? - 不同类型的数据互相运算
? ? ? ? ? ? ? ? - 对非布尔值类型的数据求布尔值
? ? ? ? ? ? ? ? - 对非数值类型的值使用一元运算符(+和-)
? ? ? ? ? ? ? ? ① 自动转换为布尔值
? ? ? ? ? ? ? ? ? ? - JavaScript遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值,系统自动调用Boolean()函数
? ? ? ? ? ? ? ? ② 自动转换为字符串
? ? ? ? ? ? ? ? ? ? - JavaScript遇到只要有字符串开头的地方,就会将非字符串的参数自动转换为字符串,具体规则是:先将复合类型的值转为原始类型的值,再将原始类型的值转为字符串
? ? ? ? ? ? ? ? ? ? - 字符串的自动转换,主要发生在字符串的加法运算时,当一个值为字符串,另一个值为非字符串,后者转化成字符串
? ? ? ? ? ? ? ? ③ 自动转换为数值
? ? ? ? ? ? ? ? ? ? - JavaScript遇到预期为数值的地方,就会将非字符串的参数自动转换为数值,系统自动调用Number()函数
? ? ? ? ? ? ? ? ? ? - 除了加法运算符(+)有可能把运算子转为字符串,其他运算符都会把运算子转换为数值(加法遇到字符串会优先拼接)
? ? ? ? ? ? ? ? ? ? - 一元运算符也会把运算子转换为数值

?五、其它类型转化为数字类型:


? ? ? ? ? ? ? ? - parseInt() 转化成整数,向下取整
? ? ? ? ? ? ? ? - parseFloat() 转化成小数/浮点数

? ? ? ? ? ? ? ? - 都只能识别以数值开头的

 // 强制转换:Number()
        // 数值:转换后还是原来的值
        console.log(Number(123));// 123
        // 字符串:如果可以被解析为数值,则转换为相应的数值
        console.log(Number('3.14'));// 3.14
        // 字符串:如果不可以被解析为数值,返回NaN
        console.log(Number('3.14JavaScript;js'));// NaN
        console.log(Number('JavaScript;js'));// NaN
        console.log(Number('JavaScript;jsl3.14'));// NaN
        // 空字符串:0
        console.log(Number(''));// 0
        // 布尔值:true-->1    false-->0
        console.log(Number(true));// 1
        console.log(Number(false));// 0
        // undefined:NaN
        console.log(Number(undefined));// NaN
        // null:0
        console.log(Number(null));// 0

// 强制转换:String()
        console.log(String(123));// "123"
        console.log(String('abc'));// "abc"
        console.log(String(true));// "true"
        console.log(String(false));// "false"
        console.log(String(undefined));// "undefined"
        console.log(String(null));// "null"
        var num = 10;
        console.log(num.toString());

// 其它转换:parseInt()
        console.log(parseInt('3.14'));// 3
        console.log(parseInt('9.99'));// 9
        console.log(parseInt('3.14JavaScript;js'));// 3
        console.log(parseInt('JavaScript;js'));// NaN
        console.log(parseInt('JavaScript;js3.14'));// NaN

// 其它转换:parseFloat()
        console.log(parseFloat('3.14'));// 3.14
        console.log(parseFloat('999'));// 999
        console.log(parseFloat('3.14JavaScript;js'));// 3.14
        console.log(parseFloat('JavaScript;js'));// NaN
        console.log(parseFloat('JavaScript;jsl3.14'));// NaN



// 自动转化
        // 不同类型数据互相运算
        console.log(123 + 'abc');// '123abc'
        // 对非布尔值类型的数据求布尔值
        if('abc') {
            console.log('hello');//hello(先判断布尔值,字符串是true,所以可以打印)
        }
        // 对非数值类型的值使用一元运算符(+和-)
        console.log(+ {foo: 'bar'});// NaN
        console.log(- [1, 2, 3]);// NaN

// 自动转换为字符串
        console.log('5' + 1);// '51'
        console.log('5' + true);// '5true'
        console.log('5' + false);// '5false'
        console.log('5' + {});// '5[object Object]'
        console.log('5' + []);// '5'
        console.log('5' + function() {});// '5function() {}'
        console.log('5' + undefined);// '5undefined'
        console.log('5' + null);// '5null'

// 自动转换为数值
        console.log('5' - '1');// 4
        console.log('5' * '5');// 25
        console.log(true - 1);// 0
        console.log(false - 1);// -1
        console.log('5' - 1);// 4
        console.log('5' * []);// 0
        console.log(false / '5');// 0
        console.log('abc' - 1);// NaN
        console.log(null + 1);// 1
        console.log(undefined + 1);// NaN
        // 一元运算符也会把运算子转换为数值
        console.log(+'abc');// NaN
        console.log(-'abc');// NaN
        console.log(+true);// 1
        console.log(-false);// -0

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:18:19  更:2021-11-20 18:18:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:20:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码