JavaScript的变量类型

2023-11-10

JavaScript的变量类型

JavaScript的数据类型分为两种:

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

(2)引用数据类型:对象(Object)、数组(Array)、函数(Function)

1.字符串

字符串可以是引号中的任意文本。您可以使用单引号或双引号:

正常写法:var name = "王路飞"
         var name = '王路飞'

特殊写法:var name = '"王路飞"'
         var name = "123'王路飞'"

不允许:var name = '王路飞"
       var name = "王路飞'
        var name = "王"路"飞"
        var name = '王'路'飞'

如果非要写,可以使用转义字符:var name = "\"王路飞\""
\是对后面的那个符号有影响  对前面的那个符号没有影响

2.数字

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:

  • 整数:

    • var a = 1;

  • 浮点数:

    • var a = 1.2;

科学计数法

  • var a = 123e5; var b = Number.MAX_VALUE

  • var a = 123e-5; var b = Number.MIN_VALUE

3.布尔

布尔(逻辑)只能有两个值:true 或 false。

  • var b = true

  • var b = false

4. Undefined

var a;

未定义 undefined

当声明了变量 但是没有给初始化的时候 会返回的是undefined

5.null

  • var n = null

  • 类型是object,用来表示一个空的对象

  • 如果你要是想删除一个对象的话  那么就将这个对象的结果赋值为null

JavaScript的变量类型高级

  1.字符串

JavaScript字符串(String)就是由零个或多个Unicode字符组成的字符序列。零个字符表示空字符串。

ascii码中:a 97 A 65 0 48

  • 字符串字面量/字符串直接量

    • 字符串必须包含在单引号或双引号中

    • 如果字符串包含在双引号中,则字符串内可以包含单引号;反之,也可以在单引号中包含双引号

    • 在ECMAScript 3中,字符串必须在一行内表示,换行表示是不允许的,如果要换行显示字符串,可以在字符串中添加换行符(\n)

    • 在ECMAScript 5中,字符串允许多行表示.实现方法:在换行结尾处添加反斜杠(\).反斜杠和换行符不作为字符串直接量的内容

    • 在字符串中插入特殊字符,需要使用转义字符\,如单引号,双引号等

    • 字符串中每个字符都有固定的位置.第1个字符的下标位置为0,第2个字符的下标位置为1...···以此类推,最后一个字符的下标位置是字符串长度减1

转义字符

  • 转义字符是字符的一种间接表示方式。在特殊语境中,无法直接使用字符自身

 var str = "请看\"这个是一个双引号";
console.log(str);

 如果在一个正常字符前添加反斜杠,JavaScript会忽略该反斜杠

字符串操作

  • 借助String类型的原型方法,可以灵活操作字符串

  • 在JavaScript中,可以使用加号(+)运算符连接两个字符串

  • 使用字符串的length属性获取字符串的字符个数(长度)

    获取的字符串的长度,长度指的是 这个字符串一共有多少个字符

    console.log(str.length);

  • 在ES5中,字符串可以作为只读数组使用,可以通过中括号运算符添加下标访问某一个值。下标从0开始,最大位置的下标是length-1

<!DOCTYPE html>
<html>
	<head>
		<meta charset='utf-8'>
	</head>
	<body>
		<script>
			var str = "老师说";
			var say = "你好啊";
			console.log(str+say);
			console.log(str + 666);
			console.log(str + 888);
			console.log(1 + 1);
			console.log("1" + 1);
			console.log(1 + "1");
			var str1 = "今天是个好天气123 b5";
			console.log(str1.length);
			console.log(str1[0]);
			//获取最后一个字符
			console.log(str1[str1.length-1]);
		</script>
	</body>
</html> 

String方法

String方法是可以将其他类型转换成字符串类型

字符串加法:

<script>
            var str = 'hello';

            // string
            // 字符串 + 字符串 ===》将字符串链接在一起了
            console.log(str + 'kanghui');
            // number
            // 字符串 + 数字  ===》将数字和字符串链接在一起了
            console.log(str + 5);
            console.log(str + 1.5);
            // boolean
            // 字符串 + boolean ===》将true和字符串链接在一起了
            console.log(str + true);
            console.log(str + false);
            // undefined
            // 字符串 + undefined ===》将undefined和字符串在一起了
            console.log(str + undefined);
            // null
            console.log(str + null);

            // 综上所述:
            // 在+号的两端 只要有一端是字符串 那么结果就是字符串
            // 结果是拼接的结果
        </script>

强制类型转换

<script>
            // 强制类型转换

            // string
            // var str = 'abcd';
            // 判断数据的数据类型
            // console.log(typeof str);
            // 将str强制类型转换为字符串
            // var str_string = String(str);
            // console.log(typeof str_string);


            // number
            // var str2 = 123;
            // console.log(typeof str2);
            // var str2_string = String(str2);
            // console.log(typeof str2_string);



            // boolean
            // var str3 = true;
            // console.log(typeof str3);

            // var str3_string = String(str3);
            // console.log(str3_string);
            // console.log(typeof str3_string);


            // undefined
            // var str4 = undefined;
            // console.log(typeof str4);

            // var str4_string = String(str4);
            // console.log(typeof str4_string);


            // null  null就是null的类型 但是在判断null的时候
            // 那么他显示的是object类型
            var str5 = null;
            console.log(typeof str5);

            var str5_string = String(str5);
            console.log(typeof str5_string);


            // 总结:
            //  可以使用String() 来将任何的数据转换为字符串类型


        </script>

 字符串--toString方法

加号的两端 只要有一端是字符串 那么结果就是字符串

如果在加号的两端一端有字符串了 那么另一端的数据就会调用toString 然后再进行拼接, toString本身的意义也是将对相应的数据转换为字符串类型

除了null和undefined之外,其他的数据类型的数据 都有toString方法

字符串表现(并不修改原变量)。

当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。

        <script>
            // 思考:为什么加号的两端 只要有一端是字符串 那么结果就是
            // 字符串呢?
            // 如果在加号的两端一端有字符串了 那么另一端的数据就会调用
            // toString 然后再进行拼接
            // console.log('a' + 1);
            // 1.toString() ===> '1'  再将'a' + '1' ==>'a1'

            // 除了null和undefined之外,其他的数据类型的数据 都有toString方法
            // 返回的是相应的值

            // toString本身的意义也是将对相应的数据转换为字符串类型

            // string
            // console.log('a'.toString());

            // number
            // var a = 1;
            // 判断了a.toString()的值的类型
            // console.log(typeof a.toString());

            // boolean
            // var a = true;
            // console.log(typeof a.toString());

            // undefined
            // undefined没有toString这个方法
            // console.log(undefined.toString());

            // null
            // null没有toString方法
            // console.log(null.toString());


        </script>

2.数字

数字(Number)也称为数值或者数

当数字直接出现在程序中时,被称为数值直接量。在 JavaScript程序中,直接输入的任何数字都被视为数值直接量。

JavaScript 中的所有数字都是以 64 位浮点数形式存储,包括整数。例如,2 与 2.0 是同一个数。

  • 浮点数溢出

    执行数值计算时,要防止浮点数溢出。例如,0.1+0.2 并不等于 0.3。

    num = 0.1+0.2; //0.30000000000000004

    这是因为 JavaScript 遵循二进制浮点数算术标准(IEEE 754)而导致的问题。这个标准适合很多应用,但它违背了数字基本常识。

    解决方法:浮点数中的整数运算是精确的,所以小数表现出来的问题可以通过指定精度来避免。例如,针对上面的相加可以这样进行处理。

    a = (1+2)/10; //0.3

    这种处理经常在货币计算中用到。例如,元可以通过乘以 100 而转成分,然后就可以准确地将每项相加,求和后的结果可以除以 100 再转换回元

  • 特殊数值

 

 

数字--Infinity

  • 计算超出范围会得到无穷大(infinity)或者无穷小(-infinity)

  • 分母为0会构成无穷大Infinity 或负无穷大-Infinity

  • 关于Infinity的运算, 无法计算 加减乘除一个数字都是Infinity,Infinity和Infinity计算,加法乘法为Infinity,其他为NaN

  • Infinity和自身相等 其他比较正常

        <script>
            // 无穷
            // 分母为0的时候 就会出现无穷
            // 一个正数除以一个0 ==》正无穷 infinity
            // console.log(1 / 0);
            // 一个负数除以一个0 ==》负无穷 -infinity
            // console.log(-1 / 0 );
            // console.log(typeof Infinity);


            // infinity的计算
            // infinity是一个数字类型  
            // infinity和数字的+-*/

            // infinity和数值的计算的结果都是infinity
            // +
            console.log(Infinity + 1);
            // -
            console.log(Infinity - 1);
            // *
            console.log(Infinity * 100);
            // /
            console.log(Infinity / 100);


            // infinity和infinity的+-*/
            // infinity和infinity的计算中  增加(+ 和 *)的时候都是infinity
            // infinity和infinity的计算中  减少(- 和 /)的时候都是NaN

            // +
            console.log(Infinity + Infinity);
            // -
            // Infinity不是一个具体值 所以减法时候不可以计算
            // 结果是NaN  not a number
            console.log(Infinity - Infinity);
            // *
            console.log(Infinity * Infinity)
            // /
            console.log(Infinity / Infinity);


        </script>
        <script>
            // 无穷和数值的比较
            //      正无穷和数值的比较
            // console.log(Infinity > 1);// true
            // console.log(Infinity < 1);// false
            // ==判断的两边的数据是否相等
            // console.log(Infinity == 1);

            //      负无穷和数值的比较
            console.log(-Infinity > 1);
            console.log(-Infinity < 1);
            console.log(-Infinity == 1);


            // 无穷和无穷的比较
            console.log(Infinity == Infinity);// true
            console.log(Infinity > Infinity); // false
            console.log(Infinity < Infinity); // false
            console.log(Infinity > -Infinity);// true
        </script>

数字--NaN

  • NaN,即非数值(Not a Number)是一个特殊的数值

  • 这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)

  • NaN特点:无论和谁比较都是fasle 无论和谁计算都是NaN(除了+字符串之外)

        <script>
            // NaN not a number  不是一个数值

            var str = '红浪漫';
            // 一个字符串是不可以减一  理论行不通
            // js怕报错 所以返回了一个NaN
            var n = str - 1;
            // console.log(n);

            // 计算
            // 数值和NaN计算 除了+字符串之外 其余的全是NaN
            // +
            // console.log(n + 'abc');
            // console.log(n + 1);
            // console.log(n + true);
            // console.log(n + undefined);
            // console.log(n + null);
            // -
            // console.log(n - 'abc');
            // console.log(n - 1);
            // console.log(n - true);
            // console.log(n - undefined);
            // console.log(n - null);
            // *
            // console.log(n * 'abc');
            // console.log(n * 1);
            // console.log(n * true);
            // console.log(n * undefined);
            // console.log(n * null);
            // /
            // console.log(n / 'abc');
            // console.log(n / 1);
            // console.log(n / true);
            // console.log(n / undefined);
            // console.log(n / null);


            // 比较
            // 任何和NAN的比较的结果都是false
            // string
            console.log(n > 'abc');
            console.log(n < 'abc');
            // number
            console.log(n > 1);
            console.log(n < 1);
            // boolean
            console.log(n > true);
            console.log(n < true);
            console.log(n < false);
            console.log(n > false);
            // undefined
            console.log(n > undefined);
            console.log(n < undefined);
            // null
            console.log(n > null);
            console.log(n < null);

            // 总结:
            // 任何和NaN的计算结果都是NaN(字符串加法除外)
            // 任何和NaN的比较结果都是false

        </script>

isNaN:isNaN方法检测一个值是不是非纯数字 , 如果非纯数字就返回true 如果是纯数字就返回false

        <script>
            // isNaN  is not a number 是 不是一个数字(不是一个数字)
            // 判断他不是一个数字

            // 如果不是一个数字 就返回true  是一个数字就返回false
            console.log(isNaN(123));
            console.log(isNaN(-123));
            console.log(isNaN('haihaihai'));
        </script>

最大值最小值

在js中数字也是有最大值和最小值的支持的,如果超过最大值或最小值,就可能计算有误
console.log(Number.MIN_VALUE);//5e-324  支持数字的最小值
console.log(Number.MAX_VALUE);//1.7976931348623157e+308 支持数字的最大值

 正无穷负无穷

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <script>
            console.log(Number.POSITIVE_INFINITY);  //Infinity
            console.log(Number.NEGATIVE_INFINITY);  //-Infinity
        </script>
    </body>
</html>

3.布尔

布尔类型仅包含两个固定的值:truefalse。其中true代表真,false代表假。

在一些判断等操作中,需要使用布尔值

哪几种情况是false的时候 千万要注意

(1)空串                            console.log(Boolean(''))

(2)数字为0         console.log(Boolean(0))

(3)NaN                             console.log(Boolean(NaN))

(4)false                             console.log(Boolean(false))

(5)undefined                   console.log(Boolean(undefined))

(6)null                               console.log(Boolean(null))

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>21_变量类型高级-布尔-boolean</title>
    </head>
    <body>
        <script>
            // 布尔:强制类型转换
            // var a = true;
            // var b = false;
            // console.log(a);
            // console.log(b);

            // string
            // Boolean(字符串)的时候 判断字符串里面是否有内容
            // 如果有内容就是true 如果没有内容就是false
            // console.log(Boolean('abcd'));
            // console.log(Boolean(''));     //false
            // console.log(Boolean('       '));  //true

            // number
            // Boolean(数值) 只要有数值都是true  但是0除外
            // console.log(Boolean(1));
            // console.log(Boolean(-1));
            // console.log(Boolean(1.1));
            // console.log(Boolean(-1.1));
            // console.log(Boolean(0));       //false

            // console.log(Boolean(Infinity));  //true
            // console.log(Boolean(-Infinity));  //true
            // console.log(Boolean(NaN));     //false

            // boolean
            // console.log(Boolean(true));  //true
            // console.log(Boolean(false));   //false
            // undefined
            // console.log(Boolean(undefined));  //false
            // // null 
            // console.log(Boolean(null));      //false

            // 哪几种情况是false的时候 千万要注意
            // (1)空串
            // (2)0   
            // (3)NaN
            // (4)false
            // (5)undefined
            // (6)null
        </script> 
    </body>
</html>

4.Undefined

变量被声明了,但没有赋值时,就等于undefined

//打印a的时候,找到a了 但是找不到a的值,所以返回一个undefined
var a;
console.log(a);
console.log(a+1);//undefined+1  计算不了

//不声明b,直接使用b,js直接报错  ReferenceError(引用错误): b is not defined
//说明完全没有找到b这个变量 代码报错停止运行
console.log(b)

5.null

  • null 类型是第二个只有一个值的数据类型,这个特殊的值是 null。

  • 从逻辑角度来看,null 值表示一个空对象指针,而这也正是使用 typeof 操作符检测null时会返回"object"的原因

undefined是null的子类  就是undefined是null的儿子

           所以在判断undefined和null是否相等的时候 就返回true

            console.log(a == b);

扩展

  1. Undefined派生自Null,两者都是表示空缺值,转换成布尔值都是假值,可以相等
  2. 但是Undefined和Null属于两种不同的类型
  3. Undefined隐含着意外的空值,而Null隐含着意料之中的空值。因此设置一个变量、参数为空的时候,建议使用null而不是undefined 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript的变量类型 的相关文章

  • 使用深度相机制作自己的Linemod数据集

    1 实施方案 1 1 任务描述 制作自己的Linemod数据集 最终目的示意如下图 1 2 整体方案 通过构建物体和标定板的坐标转换关系 然后构建标定板和相机坐标的转换关系 然后通过映射函数构建3D坐标和图像像素坐标的映射关系 拍摄一系列照

随机推荐

  • Machine Unlearning: A Survey

    这是一个新方向 机器遗忘 针对 Machine Unlearning A Survey 的翻译 机器遗忘 综述 摘要 1 引言 1 1 机器遗忘的动机 1 2 这篇综述的贡献 1 3 与现有机器遗忘综述的比较 2 前言 2 1 机器遗忘的定
  • sql查询服务器系统时间格式,SQL时间函数getdate()是指本机还是服务器上的时间?...

    SQL时间函数getdate 是指数据库所在服务器上的系统时间 SQL Server日期时间函数 1 获取当前日期GetDate getdate 函数以datetime数据类型的格式返回当前SQLServer服务器所在计算机的日期和时间 其
  • 谷歌浏览器调试技巧

    因为上周一直在前段页面找一个东西 中间用到了谷歌浏览器的调试 来大概总结一下 Element标签 该标签使用来查看页面的HTML标签元素的 能够也就是查看源码 我们可以看到布局 可以看到用到的样式 还有用到的链接等等 Source 标签 点
  • 开关电源matlab仿真文件,开关电源matlab仿真设计报告.doc

    开关电源matlab仿真设计报告 开关电源matlab仿真设计报告 基于matlab的电力电子仿真设计报告 课程设计 综合实验 报告 2010 2011 年度第 1 学期 名 称 电力电子技术课程设计 院 系 电气与电子工程学院 班 级 电
  • ZigBee协议

    1 1 IEEE802 15 4标准 随着通信技术的迅速发展 人们提出了在自身附近几米范围内通信的要求 这样就出现了个人区域网络PAN Personal Area Network 和无线个人区域网络WPAN Wireless Persona
  • c语言开发题库管理系统,C语言程序设计_题库管理系统(参考).doc

    程序设计基础课程设计报告 班 级 计算机科学与技术1103班 姓 名 杨广宇 指导教师 胡宏涛 完成日期 2012年9月6日 题目 1 设计题目与要求 简要介绍课程设计题目内容与要求 1设计内容 要求输入试题 仅限选择题和填空题 基本信息
  • 织梦ajax上传图片,使用Ajax异步上传图片的方法(html,javascript,php)

    前两天项目中需要用到异步上传图片和显示上传进度的功能 于是找了很多外国的文章 翻山越岭地去遇上各种坑 这里写篇文章记录一下 HTML HTML代码没什么好说 一个form表单 还有文件类型的input 我们来看js部分 javascript
  • Java 面向对象-2

    1 面向对象进阶 1 1 继承 1 继承的概念 多个类中存在相同属性和行为时 将这些内容抽取到单独一个类中 那么多个类无需再定义这些属性和行为 只要继承那个类即可 此处的多个类称为子类 派生类 单独的这个类称为父类 基类或超类 可以理解为
  • 十大经典排序算法(动图演示C++实现)

    参考 https www cnblogs com onepixel articles 7674659 html 十大经典排序算法 动图演示C 实现 0 算法概述 0 1 算法分类 十种常见排序算法可以分为两大类 选泡插 快归堆希统计基 比较
  • SpringBoot脚手架工程快速搭建

    1 说明 本文汇总了搭建Spring Boot工程的文章 可以用于快速搭建一个新的Spring Boot工程 包括最开始的PowerDesigner数据库设计工具使用 导出对应数据库的DDL脚本 然后创建Maven工程 配置Spring B
  • Go tcp通信

    一般的网络通信socket编程过程按照建立socket使用socket 函数 绑定socket使用bind 函数 监听端口使用listen 函数或者连接使用connect 函数 接收使用receive 函数或者发送使用send 函数这样一个
  • docker部署mysql和jar包

    参考链接 docker介绍 一 文件准备 1 LabelingTool 后端 lt main模块下的配置文件 修改hanlp properties中 linux docker下hanlp路径 root usr Hanlp 2 将后端打成ja
  • Python3.7 + Yolo3识别 语音播报

    一 利用Python调用系统win10的文字转语音 首先下载需要用到的库 pip install pyttsx3 i https mirrors aliyun com pypi simple 接下来直接上代码 import win32com
  • 朴素贝叶斯分类器简介及C++实现(性别分类)

    贝叶斯分类器是一种基于贝叶斯定理的简单概率分类器 在机器学习中 朴素贝叶斯分类器是一系列以假设特征之间强 朴素 独立下运用贝叶斯定理为基础的简单概率分类器 朴素贝叶斯是文本分类的一种热门 基准 方法 文本分类是以词频为特征判断文件所属类别或
  • GPGGA数据解析

    此文为转载其他博主的 由于没有注明转载出处 所以不从得知 谢谢原文作者 NMEA数据如下 GPGGA 121252 000 3937 3032 N 11611 6046 E 1 05 2 0 45 9 M 5 7 M 0000 77 GPR
  • 自定义数组的工具类

    1 创建ArrayUtilTest类 用于编写要实现数组的功能的方法 public class ArrayUtilTest 求数组的最大值 public int getMax int arr int max 0 for int i 0 i
  • cv2和PIL.Image之间的转换

    PIL Image转换成OpenCV格式 import cv2 from PIL import Image import numpy image Image open plane jpg image show img cv2 cvtColo
  • 搭建一个单节点的k8s集群

    首先安装kubectl kubeadm kubelet 关闭文件交换 sudo swapoff a 创建单节点集群 kubeadm init pod network cidr 192 168 0 0 16 kubernetes versio
  • OpenCV中的霍夫线变换、概率霍夫线变换

    OpenCV中的霍夫线变换 概率霍夫线变换 1 效果图 2 原理 2 1 什么是霍夫变换 2 2 什么是概率霍夫变换 3 源码 3 1 霍夫变换 3 2 概率霍夫变换 参考 这篇博客将介绍Python OpenCV中的霍夫变换 包括什么是霍
  • JavaScript的变量类型

    JavaScript的变量类型 JavaScript的数据类型分为两种 1 值类型 基本数据类型 字符串 String 数字 Number 布尔 Boolean 未定义 Undefined 空 Null Symbol 2 引用数据类型 对象