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);// nullconsole.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 numberconsole.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);// trueconsole.log(Infinity > Infinity); // falseconsole.log(Infinity < Infinity); // falseconsole.log(Infinity > -Infinity);// true</script>

数字--NaN

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

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

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

        <script>// NaN not a number  不是一个数值var str = '红浪漫';// 一个字符串是不可以减一  理论行不通// js怕报错 所以返回了一个NaNvar 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// stringconsole.log(n > 'abc');console.log(n < 'abc');// numberconsole.log(n > 1);console.log(n < 1);// booleanconsole.log(n > true);console.log(n < true);console.log(n < false);console.log(n > false);// undefinedconsole.log(n > undefined);console.log(n < undefined);// nullconsole.log(n > null);console.log(n < null);// 总结:// 任何和NaN的计算结果都是NaN(字符串加法除外)// 任何和NaN的比较结果都是false</script>

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

        <script>// isNaN  is not a number 是 不是一个数字(不是一个数字)// 判断他不是一个数字// 如果不是一个数字 就返回true  是一个数字就返回falseconsole.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);  //Infinityconsole.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

JavaScript的变量类型相关推荐

  1. 前端-JavaScript1-6——JavaScript之变量类型的转换

    6.1 string → number 先来学习一个语句,这个语句和alert差不多,也是弹窗,弹的是输入框: 1    prompt("请输入你的电话","139&qu ...

  2. javascript 查看变量类型

    前言 360极速浏览器: 12.0.1476.0 (正式版本) (32 位) 修订版本: 47c49e5a5935cfffa348dcfa6c581f4394327ac8 操作系统: Windows ...

  3. sql定义布尔类型变量_Php –布尔变量类型,True,False

    sql定义布尔类型变量 [rps-include post=6522] [rps-include post = 6522] Programming generally consist of numer ...

  4. javascript中对变量类型的判断

    在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined,Null,Boolean, Number和String:复杂数据类型是Object,Object中还 ...

  5. javascript中对变量类型的推断

    本文正式地址:http://www.xiabingbao.com/javascript/2015/07/04/javascript-type 在JavaScript中,有5种基本数据类型和1种复杂数据 ...

  6. javascript基础之判断变量类型

    判断变量类型 javaSctipt数据类型7种: Number, String, Boolean, Null, Undefined, Object, Symbol typeof操作符 可能返回的值如下 ...

  7. 详解JavaScript变量类型判断及domReady原理 写得很好

    原文:详解JavaScript变量类型判断及domReady原理 我们知道,在开发JavaScript时候,经常要判断JavaScript变量类型,此 JavaScript教程 详细介绍JS变量的判断 ...

  8. 渡一教育公开课web前端开发JavaScript精英课学习笔记(二)变量类型,运算符

    JavaScript引入方式 内嵌 <script type = "text/javascript">document.write('hello,javascript! ...

  9. 说说javascript变量类型和变量类型检测

    为什么80%的码农都做不了架构师?>>>    javascript是一种弱类型语言,它的典型例子就是即变量在使用的时候可以给它赋值任何类型.那么先来看下javascript都有那些 ...

最新文章

  1. python-01实现考勤表添加与删除
  2. EXCEL中SUMIF函数介绍
  3. mysql pos点是什么,MySQL 5.6 主从报错一例
  4. python如何封装成可调用的库_Python实现打包成库供别的模块调用
  5. 面试阿里挂了却拿到网易、点我达offer,一个三年经验Java程序员的面试总结
  6. java空格键_Java KeyPressed-如果其他键也太旧,则无法检测是否按下了空格键
  7. think route.php,ThinkPHP5—路由(route)详解
  8. php和python-PHP与Python语言有哪些区别之处?选择哪一个好?
  9. Mac大文件分包split与合并cat,加密压缩zip
  10. 制作3D浪漫炫酷相册【附源码】
  11. python 中sg表示什么_十分钟带你入门最Python风格的Gui库
  12. 计算机主机的输出设备,计算机的输出设备有哪些呢?
  13. 电商平台-财务系统模块的设计与架构
  14. python scipy拟合曲线optimize.curve_fit 50例
  15. 计算机教学说课稿,计算机教学说课稿
  16. linux如何结束at命令,Linux命令总结--at命令(atq.atrm)
  17. 中国八横八纵大容量光纤通信网——世界级光纤通信网
  18. 利用for循环打印图形
  19. Navicat for MySQL 12破解
  20. 【OpenCV】IPCamera读取网络摄像头实时画面

热门文章

  1. [转]虚拟驾舱Cockpit可选的芯片平台
  2. Mac整屏截图/局部截图快捷键
  3. Android 开发小总结
  4. 看完《双子杀手》读后感
  5. pcba完整新工艺流程来了
  6. 移动端性能监测工具篇之U-APM
  7. KEPServerEX与MES对接的几种方式
  8. 2021-05-07-今日活动方案分享
  9. 高等数学 函数的定义
  10. 内存不能read 解决办法