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

来源 | http://www.fly63.com/article/detial/6632

一、数据类型

前言

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.2var b = parseFloat('1.3.4'); //1.3var c = parseFloat('c12'); //NaNvar d = parseFloat(null); //NaNvar 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);

本文完〜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值