首页 > 编程语言 >JavaScript:三、数据类型

JavaScript:三、数据类型

时间:2024-10-23 18:17:11浏览次数:3  
标签:输出 console log JavaScript 数据类型 运算符 字符串 var

JavaScript:三、数据类型

JavaScript 将数据类型分为两大类,分别是基本数据类型(或称为值类型)和复杂数据类型 (或称为引用类型)。

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义 (Undefined)、Symbol。

引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。

3.1基本数据类型

3.1.1布尔型(boolean)

true 和 false 值只有全部为小写时才表示布尔型

声明变量并赋值布尔型数据的示例代码如下

        var flag1=true
        console.log(flag1)     //输出:true
        var flag2=false
        console.log(flag2)     //输出;false

3.1.2数字型(Number)

JavaScript 中的数字可以分为整数和浮点数(可以表示小数),它们同属于数字型,在数字前面还可以添加“-”符号表示负数,添加“+”符号表示正数(通常情况下省略“+”)。

在 JavaScript 中使用整数时,一般情况下使用十进制表示,除此之外还可以使用八进制或十六进制表示。

八进制:

八进制的值第一位必须是零0,后面每一位数的范围在0~7。如果某一位数超出范围,首位的0会被忽略,后面的数值会按照十进制来解析

十六进制:

十六进制的值前两位必须是0x,后面每一位十六进制数字的范围在0~9及A~F,字母A~F可以大写也可以小写。

声明 3 个变量,分别赋值为八进制、十进制、十六进制的整数,示例代码如下。

var oct = 032;          // 八进制表示的 26 
var dec = 26;           // 十进制数表示的 26 
var hex = 0x1a;         // 十六进制数表示的 26

a.标准格式:数学中小数的写法

    var a=2.11
    console.log(a)          //输出:2.11

 b.科学记数法:将数字表示成一个数与 10 的 n 次幂相乘的形式,程序中使用 E(或 e)后面跟一个数字的方式表示 10 的 n 次幂。

 var b=2E3
 console.log(b)          //输出:2000

3.1.3字符串(string)

在 JavaScript 中使用单引号('')或双引号("") 来标注字符串

// 单引号字符串 
var num = ''; // 表示空字符串 
var slogan = '知识'; // 表示字符串'知识' 
// 双引号字符串 
var total = "";// 表示空字符串 
var str = "知识就是力量";// 表示字符串“知识就是力量”

嵌套使用时有以下两种特殊情况需要使用“\”进行转义。

⚫ 在单引号中使用单引号

⚫ 在双引号中使用双引号

单、双引号嵌套使用的示例代码如下。

// 单引号中包含双引号 
var color = '"red"blue'; 
// 字符串内容为"red"blue 
// 双引号中包含单引号 
var food = "'pizza'bread";// 字符串内容为'pizza'bread 
// 单引号中包含单引号 
var say1 = 'I\'m …'; 
// 字符串内容为 I'm ... 
// 双引号中包含双引号 
var say2 = "\"Tom\""; 
// 字符串内容为"Tom"

3.1.4空型(null)

只有一个特殊的 null 值,表示变量未指向任何对象。

声明变量并赋值为 null 的示例代码如下。

var a = null; 
console.log(a);             // 输出结果:null 

JavaScript 语法对大小写敏感,因此变量的值只有是小写的 null 时才表示空型。

3.1.4 未定义型 (undefined)

Undefined 类型只有一个值,即undefined。在声明变量但是没有初始化时,这个变量的值就是undefined。

正常情况下,调用未声明的变量会报错,但是对未声明的变量使用typeof操作符,同样会返回"undefined"

var myname
console.log(typeof myname)           //输出:undefined

3.1.5 typeof()

当不确定一个变量或值是什么类型的数据时,可以利用 typeof 操作符进行数据类型检测。

typeof 操作符以字符串形式返回检测结果。

typeof 操作符的语法格式如下。

语法格式 1

typeof 需要类型检测的数据

语法格式 2

typeof(需要类型检测的数据)

 3.1.6 isNaN()

NaN,即非数值(Not a Number),如果想要判断一个变量的值是否为数字,可以使用 isNaN()进行判断,返回结果为布尔值,true 表示变量的值不是数字,false 表示变量的值是数字

 console.log(isNaN('a'))               //true
 console.log(isNaN(222))                //false
 console.log(isNaN('222'))               //false
 console.log(isNaN(true))          //false(可以被转换成数值 1)

3.1.7 数字型中的特殊值

数字型有以下 3 个特殊值。

a.  Infinity(无穷大)

b.  -Infinity(无穷小)

c.  NaN(Not a Number,非数字)

console.log(Number.MAX_VALUE * 2);                // 输出结果:Infinity 
console.log(Number.MIN_VALUE * 2);                // 输出结果:-Infinity 
console.log('aaa' - 2);                              // 输出结果:NaN	

3.2数据类型转换

3.2.1数值转换

有 3个函数可以把其他类型的值转换为数值:

(1)Number():把任何数据类型的值转换为数值

(2)parselnt():把字符串转换为整数值

(3)parseFloat():把字符串转换为浮点数值

不同类型数据转数字型数据的结果:

 

不同类型数据转数字型的注意事项

(1)在转换纯数字字符串时会忽略前导零。

(2)利用 parseInt()、parseFloat()和 Number()进行数据类型转换时,若数据开头有正号 “+”或负号“-”,会被当成正数或者负数。

(3)使用 parseInt()或 parseFloat()将字符串转换为数字型数据时,若字符串开头部分可被识别为数字,则转换为相应的数字;若字符串末尾部分有非数字字符,则这些非数字字符会被自动忽略;若字符串开头部分无法被识别为数字,则转换为 NaN。

1.parseInt()会直接省略数据的小数部分,返回数据的整数部分,使用 parseInt()将数据转换为数字型

 console.log(parseInt(2.33))                       //输出:2

2.Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN

console.log(Number('2.22'))                       //输出:2.22
console.log(Number('a'))                          //输出:NaN

3.parseInt()会直接省略数据的小数部分,返回数据的整数部分

      var a='12.3px'
      console.log(parseInt(a))   
//结果12  如果第一个字符是数字会解析(整数部分)直到遇到非数字结束
    //var b='abc12.33'
//    console.log(parseInt(b))   
 //结果:返回NaN,如果第一个字符不是数字或者符号就返回NaN

 

4. parseFloat()把字符串转换成浮点数,parseFloat()和parseInt非常相似,不同之处在与parseFloat会解析第一个. 遇到第二个.或者非数字结束如果解析的内容里只有整数,解析成整数

 var a='12.2'
 console.log(parseFloat(a))
 var b='3FD'
 console.log(parseFloat(b))

 

3.2.2 转换为字符串

方式一:调用toString()方法

通过调用被转换数据类型的的toString()方法,该方法不会影响到原变量,会将转换后的结果返回,需要定义新的变量接收,或者将值赋予已有变量。
但是需要注意的是,null和undefined这两个类型的值是没有toString()方法的。

Number类型转换成String

        var number = 123;
        console.log(typeof number);            //输出:number
        console.log(number);                   //输出:123
        number = number.toString();            //调用to String()函数
        console.log(typeof number);            //输出:string
        console.log(number);                   //输出:123

Boolean类型转换成String

        var bool = true;
		console.log(typeof bool);         
		console.log(bool);                 //输出:true
		bool = bool.toString();
		console.log(typeof bool);             //输出:string
		console.log(bool);
方式二:调用String()函数

调用String()函数,并将被转换的数据作为参数传递给函数。

使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法,但是对于Null和Undefined,无法调用toString()方法的情况下,它会将null 直接转换为“null”,将undefined直接转换为“undefined”。

转换null 和 undefined

        var clear = null;
        clear = String(clear);
        console.log(typeof clear);                //输出:string
        console.log(clear);                       //输出:null

        var clear2 = undefined;
        clear2 = String(clear2);                  
        console.log(typeof clear2);                //输出:string
        console.log(clear2);                       输出:undefined
方式三:拼接字符串

任何的值和字符串做加法运算,都会先将其转换为字符串,再进行拼接操作,我们可以利用这一特点,来将一个任意的数据类型转换为String,只需要为任意的数据类型 + 一个""空串,即可将其转换为String类型。

这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用了String()函

(1)转换Boolean类型值成字符串

        var bool=false
        bool=bool+""
        console.log('bool type='+typeof bool)          //输出:bool type=string
        console.log("bool="+bool)                       //输出:bool=false

(2转换Number类型值

        var number = 123;
		number = number + '';
		console.log("number type = " + typeof number);
		console.log("number = " + number);

(3)转换null

        var flag = null;
		flag = flag + '';
		console.log("flag type = " + typeof flag);
		console.log("flag = " + flag);

(4转换undefined

        var count = undefined;
 		count = count + '';
		console.log("count type = " + typeof count);
		console.log("count = " + count);

3.3 运算符

3.3.1算术运算符

自增和自减运算符可以快速对变量的值进行递增或递减运算,自增和自减的分类如下

a.前置自增(自减)运算符:放在变量前面,返回计算后的结果。

         var a=2
         a=++a
         console.log(a)                //输出:3  

b. 后置自增(自减)运算符:放在变量后面,返回计算前的结果。

         var b=3
         b=b--
         console.log(b)                //输出:3

c . 使用 toFixed()方法可以规定浮点数的小数位数

         var num=1.32
         console.log(num.toFixed(1))   //输出:1.3

 d.加号“+”可以用于字符串拼接,示例代码如下。不要求使用+进行前后一致(与 python 的区别)

         var name = '小强';
         var sex = '男';
         var str = name + ':' + sex; // 字符串拼接
         console.log(str);             //输出:小强:男

 

显式转换与隐式转换的区别如下。

  1. 显示转换:也称为强制类型转换,是手动进行的,例如 Boolean()、parseInt()等都属于显示转换。
  2. 隐式转换:自动发生,当操作的两个数据类型不同时,JavaScript 会按照既定的规则来进行自动转换
// 利用隐式转换将数据转换为数字型数据 
console.log('12' - 0); 
// 输出结果:12console.log('12' * 1); 
// 输出结果:12 
console.log('12' / 1); 
// 输出结果:12 
// 利用隐式转换将数据转换为字符串型数据 
console.log(12 + ''); 
// 输出结果:12 
console.log(true + ''); 
// 输出结果:true 
console.log(null + ''); 
// 输出结果:null 
console.log(undefined + ''); 
// 输出结果:undefined

3.3.2赋值运算符

赋值运算符用于将运算符右边的值赋给左边的变量。

特殊情况:当“+=”运算符左右两边同为字符串类型或有一边为字符串类型数据时,将进行字符串拼接并赋值

3.3.3比较运算符

比较运算符用于对两个数据进行比较,比较结果是布尔值 true 或 false

==、!=和===、!==的区别

a. ==、!=在比较不相同类型的数据时,首先会自动将要进行比较的数据转换成相同的

数据类型,然后再进行比较。

b.===、!==在比较不相同类型的数据时,不会进行数据类型的转换。

3.3.4 逻辑运算符

逻辑运算符用于条件判断,下面列举一些 JavaScript 中常用的逻辑运算符。

// 逻辑“与” 
console.log(123 && 456);               // 输出结果:456 
console.log(2 > 1 && 3 > 1);            // 输出结果:true 
// 逻辑“或” 
console.log(123 || 456);                 // 输出结果:123 
console.log(2 < 1 || 3 < 1);              // 输出结果:false 
// 逻辑“非” 
console.log(!(2 > 1));                    // 输出结果:false 

如果通过左表达式能够确定最终值时,则不运算右表达式的值,此时称为短路。

短路效果的示例代码如下。

var num = 1; 
false && num++;                             // && 短路情况 
console.log(num);                             // 输出结果:1
true || num++;                                // || 短路情况 
console.log(num);                            // 输出结果:1

3.3.5 三元运算符

三元运算符也称为三元表达式,使用问号“?”和冒号“:”两个符号来连接,

根据条件表达式的值来决定问号后面的表达式和冒号后面的表达式哪个被执行。

其语法格式如下。

条件表达式 ? 表达式 1 : 表达式 2

如果条件表达式的值为 true,则返回表达式 1 的执行结果。

如果条件表达式的值为 false,则返回表达式 2 的执行结果。

下面演示三元运算符的使用。声明变量 age 并赋值,判断变量 age 的值是否大于等于 18,如果大于等于 18,则输出“已成年”,否则输出“未成年”,

示例代码如下。

var age = 15; 
var status = age >= 18 ? '已成年' : '未成年'; 
console.log(status); // 输出结果:未成年

3.3.6 位运算符

位运算符用来对数据进行二进制运算,在运算时,位运算符会将参与运算的操作数视为由 二进制数(0 和 1)组成的 32 位的串

使用 “15 & 9” 将 15 与 9 进行按位 “ 与 ” 运算,具体演算过程如下。 使用 “15 | 9” 将 15 与 9 进行按位 “ 或 ” 运算,具体演算过程如下。

 

3.3.7 运算符优先级

JavaScript 中运算符的优先级,表中由上至下递减,结合方向表示同级运算符执行顺序

标签:输出,console,log,JavaScript,数据类型,运算符,字符串,var
From: https://blog.csdn.net/2401_86036532/article/details/143187290

相关文章

  • JavaScript: 二、基本语法
    目录2.1变量以及命名规则2.2变量的声明与赋值2.3声明变量(varletconst)2.3.1Var 2.3.2let2.3.3const2.3.4总结2.1变量以及命名规则变量是程序在内存中申请的一块用来存放数据的空间。变量由变量名和变量值组成,通过变量名可以访问变量的值。命名规则(1)不能......
  • 信息学奥赛复赛复习20-CSP-S2019-01格雷码-数据类型范围、unsigned 关键字、无符号范
    PDF文档回复:202410231P5657[CSP-S2019]格雷码[题目描述]通常,人们习惯将所有n位二进制串按照字典序排列,例如所有2位二进制串按字典序从小到大排列为:00,01,10,11。格雷码(GrayCode)是一种特殊的nn位二进制串排列法,它要求相邻的两个二进制串间恰好有一位不同,特别地......
  • 信息学奥赛复赛复习20-CSP-S2019-01格雷码-数据类型范围、unsigned 关键字、无符号范
    PDF文档公众号回复关键字:202410231P5657[CSP-S2019]格雷码[题目描述]通常,人们习惯将所有n位二进制串按照字典序排列,例如所有2位二进制串按字典序从小到大排列为:00,01,10,11。格雷码(GrayCode)是一种特殊的nn位二进制串排列法,它要求相邻的两个二进制串间恰好有一位不同......
  • JavaScript中的文件
    裁剪图片原理:借助Canvas,绘制圆形路径,裁剪,填充图片/***@description:裁剪图片变为圆形*@return{Promise}*@param{String}url:普通路径*/exportconstclipImageUrl=(url)=>{returnnewPromise((resolve,reject)=>{letimage=newImage......
  • Javascript数据类型及转换
    Javascript代码引入方式同HTML相似分为行内式、内嵌式、外链式    1.行内式:行内式是将JavaScript代码作为HTML标签的属性值使用。<ahref="javascript:alert('Hello');">test</a>代码杂乱容易混淆不推荐    2.嵌入式:也称为内嵌式,使用<script>标签包......
  • JavaScript 第27章:构建工具与自动化
    在现代JavaScript开发中,构建工具、代码转换工具、代码质量和代码格式化工具对于提高开发效率、保持代码整洁以及确保代码质量有着至关重要的作用。下面将分别介绍Webpack、Babel、ESLint和Prettier的配置与使用,并给出一些示例。1.构建工具:Webpack配置与使用Webpack是一个......
  • 鸿蒙Next之数据同步艺术之三:标准化数据类型解析-UTD详解
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。本文将深入探讨华为鸿蒙HarmonyOSNext......
  • 鸿蒙Next之数据同步艺术之二:深入理解标准化数据类型 (UTD)
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。UTD的设计原则层级结构:UTD采用层级......
  • 6个关于JavaScript的超级技巧
    对象属性简写问题:将变量分配给对象属性可能会重复。解决方案:使用属性简写来简化对象创建。动态属性名称问题:使用动态属性名称创建对象可能很冗长。解决方案:使用计算属性名称动态创建对象属性。数组方法:map()、、filter()和reduce()问题:对数组进行迭代可能会重复。解决方案......
  • 变量与基本数据类型
    文章目录一、程序员必备修养--注释1-1.单行注释-->用#符号表示,在#后面的内容都是注释1-2.多行注释-->用一对三引号包裹着的内容(三引号=三对单/双引号)二、初识变量三、变量的基本使用3-1.声明变量:把右边的数据赋值给左边的变量名3-2.使用变量:直接输出变量名3-3.用i......