JS中一定要了解的数据类型和数据转换

一、数据类型

前言

Js中的类型只有6种,其中基本数据类型有5种分别为string,number,boolen,null,undefined,引用类型有一种,就是object,object是一个大的综合体,在JS中除了那5个基本数据类型以外,其他的一切皆对象。以下是最近自学js整理的一些笔记,希望能让更多初学者了解到数据类型的基本概念。

正文

**1.获取变量类型**

typeof

var age = 18;

console.log(typeof age);  // 'number'

**2.基本数据类型**

字符串(String),数值型(number),布尔型(boolean)

<script>

    //a.字符串

    var a = "laowangba"; 

    //document.write(typeof(a));

    

    //数值

    var b = 123;

    var b1 = 123.1;---> 同样是number类型,不要判断两个浮点数是否相等.

    

    //布尔型

    var c = ture;

    var d = false;

</script>
  • Boolean字面量: true和false,区分大小写
  • 计算机内部存储:true为1,false为0

**3.复合数据类型**

对象(object),数组(array object)

<script>

    //对象

    var e = {'name':'niu','age':18}; ---> 等价于PHP中class a()

   

</script>

**4.其他数据类型**

函数,null,undefined

<script>

    //函数类型

    var j = function(){};

    //document.write(j); ---> 这里可能会有争议,但typeof打印出来的确就有funcion类型

    

    //null类型

    var h = null;

    //document.write(h); ---> 空对象,对象类型中的一个分支,没有此对象的时候会显示null.

    //alert(document.getElementById('notExistElement')); --->显示为null,找不到此对象

    

    //undefined类型

    var g;

    //document.write(i); ---> 打印一个不存在的变量,定义为undefined,未定义或者定义了,但未初始化

    

    

    //alert(null == undefined);---> 显示结果是true

    //alert(null === undefined);---> 显示结果是false

</script>

二、数据类的转换

**2.1 隐式转换**

隐式转换常用于if判断等需要直接结果的地方.

<script>

    undefined == null;  // true   

    1 == true;  // true  

    2 == true;  // false  

    0 == false;  // true

    0 == '';  // true

    NaN == NaN;  // false ---> NaN 注意:这是JS中一个特殊的表示,NaN表示不等于任何值.这个数值表示本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。任何数值除以0都会导致错误而终止程序执行。一般使用isNaN()来判断是否为NaN类型.

    [] == false;  // true  

    [] == ![];  // true

    '6' - '3'  // 3

    1234 + 'abcd' // "1234abcd"

</script>
  1. undefined与null相等,但不恒等(===)
  2. 一个是number一个是string时,会尝试将string转换为number
  3. 隐式转换将boolean转换为number,0或1
  4. 隐式转换将Object转换成number或string,取决于另外一个对比量的类型
  5. 对于0、空字符串的判断,建议使用 “===”
  6. “==”会对不同类型值进行类型转换再判断,“===”则不会.它会先判断两边的值类型,类型不匹配时直接为false

**2.2显示转换**

Number:

var a = Number('1');

var b = Number(1);

var c = Number('c');

var d = Number(null);

var e = Number(undefined);



console.log(a,b,c,d,e); // 1 1 NaN 0 NaN



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

String:

String(1234);  // "1234"

String('abcd');  // "abcd"

String(true);  // "true"

String(undefined); // "undefined"

String(null);  // "null"

Boolean:

var a = Boolean('0');

var b = Boolean(0);

var c = Boolean('1');

var d = Boolean(null);

var e = Boolean(undefined);

var f = Boolean(NaN);



console.log(a,b,c,d,e,f); //true false true false false false



// 0、''(空字符串) 、null、 undefined 、NaN 会转换成false  其它都会转换成true

parseFloat:

var a = parseFloat('1.2df'); //1.2

var b = parseFloat('1.3.4'); //1.3

var c = parseFloat('c12'); //NaN

var d = parseFloat(null); //NaN

var e = parseFloat(undefined); //NaN



console.log(a,b,c,d,e); 



// parseFloat() 把字符串转换成浮点数

// parseFloat()和parseInt非常相似,

// 不同之处在与parseFloat会解析第一个 . 遇到第二个.或者非数字结束

// 如果解析的内容里只有整数,解析成整数

parseInt()

var a = parseInt('1.2df'); //

var b = parseInt(1);

var c = parseInt('c12');

var d = parseInt(null);

var e = parseInt(undefined);



console.log(a,b,c,d,e); //1 1 NaN NaN NaN



// 如果第一个字符是数字会解析,直到遇到非数字结束

// 如果第一个字符不是数字或者符号就返回NaN

2.3 字符串特别说明

**1. 单引号和双引号均可解析转义字符**

**2. 单引号和双引号均不能解析变量**

**3. 变量与字符串,变量与变量要使用+来拼接,区分开PHP**

**4. 单引号和双引号可以互相嵌套,如果单引号中药嵌套单引号,需要将单引号转义,同理,双引号相同**

<script>

    //单引号和双引号为啥不能解析说明

    var a = 10;

    alert('a'); ---> 此处懵逼,到底是要输出变量还是字符串?它不像PHP,有个$直接可以区分开变量和字符串

    alert('a'+ a);

    

    //+连接说明

    alert('hello' + 3 + 'world'); //hello3world

    alert(3 + 2 + 'hello' + 5 + 'world'); //5hello5world

    alert(4 + 4 + 'hello' + 4 + 5 + 'world'); //8hello45world  ---> 左往右连接,两个数字会理解为加号,直到碰见不为数值则理解为拼接.

</script>

如何打印一下字符串:

var s = '我很喜欢   \"雷锋  \'的精神\'  \"';

console.log(s);
  • 字符串长度

length属性用来获取字符串的长度

var str = 'Hello World';

console.log(str.length);

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DBA随笔

Python之面向对象

在Python中,实例的变量名如果以双下划线”__”开头,它就变成了一个私有变量,类似于C++当中的private属性,只有内部可以访问,外部不能访问,...

7620
来自专栏DBA随笔

Python之函数编程(2)

在上面的命令中,我们定义一个return_sum()的函数,这个函数返回一个sum的函数,sum函数的作用是求一个可迭代对象的所有元素的和,当我们直接调...

5410
来自专栏程序员小明

单例模式--双重检验锁真的线程安全吗

单例模式是我们最熟悉不过的一种设计模式,用来保证内存中只有一个对象的实例。虽然容易,但里面的坑也有很多,比如双重检验锁模式(double checked loc...

7310
来自专栏DBA随笔

Python之高级特性(2)

加入我们想要生成一个list,它的内容是从1到8的整数,我们可以用list(range(1:9))来进行生成:

5310
来自专栏DBA随笔

Python之函数编程(1)

第一次接触到这个知识点的时候,我还不是特别适应,内置的函数怎么可以用一个变量来代替?但是python确实是这么做的,这也不妨碍它的顺利执行。举个例子说明...

5510
来自专栏DBA随笔

Linux之sed命令详解

语法 sed [-hnV][-e<script>][-f<script文件>][文本文件]

6610
来自专栏DBA随笔

Python调试方法简介

在我们写Python的时候,很难保证一次性写完并且不出错,一个程序写完之后,总有各种各样的bug需要修正,这些错误有的可以通过查看错误信息查看,有的则无...

7010
来自专栏SimpleAI

数据结构学习笔记分享

偶然的机会,在bilibli上看到了郝斌老师教的《数据结构入门》,课程录制时间是2009年,也就是10年前。虽然如此久远,但是我从听第一节课开始就深深被郝斌老师...

6420
来自专栏cppentry

​C++ Swap函数有几种写法?

整型数比较容易理解,如果是字符串呢?字符串交换不能直接使用上面类似的方法赋值,想想原因是啥?:)

9620
来自专栏DBA随笔

Shell中的基本运算符

平时工作中python用的比较多,在用shell写一些脚本的时候,总是有一些小问题,今天简单看了看shell中的运算符相关的一些知识,通过一些脚本来把这...

4910

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励