JavaScript变量转换

目录


一、自动转换

"=="的自动转换

自动转换优先级:number>boolean>String,越小越先转换

(1)Number与Boolean:

console.log(0==false); //true
console.log(1==true); //true
console.log(2==true); //flase
//这个过程其实是Boolean类型转换为数字的过程

(2)Number与String:

console.log(""==0);  //true
console.log("12"==12); //true
console.log("12a"==12); //false
//String自动转换时只能转换纯数字的字符串

(3)String与Boolean

console.log(""==false);  //true
console.log("s"==true); //true
//字符串转换为boolean均为true

(4)null的自动转换

null的本质是空对象,自动转换时会处理空对象的引用地址,转换为数字与其他对象的处理

console.log(null==0);  //false
//地址是数字,且肯定不是0 console.log(null==false); //false
console.log(null==true); //false
//地址是数字,比较时会将boolean转换为数字 console.log(null=="null"); //false
console.log(null==""); //false
//地址为数字,比较时会将String转换为数字

(5)undefined的自动转换

undefined表示未定义,不带任何东西,大家可以理解为老顽固(偷笑)

console.log(undefined==0);  //false
//无法自动转换数字 console.log(undefined==false); //false
console.log(undefined==true); //false
//无法自动转换boolean console.log(undefined==""); //false
console.log(undefined=="undefined"); //false
//无法自动转换为String console.log(undefined==null); //true
console.log(undefined===null); //false
//null是空对象,会被认为是undefined,但严格的来说两者是不相等的

二、强制转换

1、运算强制转换

"+"会尝试将两端的值尝试转换为字符串或数字。优先级:String>Number

(1)Number与Boolean:

console.log(1+false); //1
console.log(1+true); //2

(2)Number与String:

console.log(""+1);  //"1"
console.log("1"+1); //"11"
//运算时,String优先级大于Number,Number转换为String

(3)String与Boolean

console.log(""+false);  //false
console.log(""+true); //true
console.log(typeof(""+true)); //String
//按照优先级,会将boolean转换为String

(4)null

console.log(null+1);  //1
//null的本质是空对象,强制转换会转换为0

(5)undefined

console.log(undefined+0);  //NaN
//强制转换数字时为NaN
console.log(Boolean(undefined)); //false

2、类型强制转换

(1)Number

String:
这里说下String()和toString()的区别
toString()可以将除了null、undefined以外的一切对象转换为String,且toString()可以接收第二个参数,将字符串的进制进行改变
String()可以将任何对象转换为String,String只有一个传参 Boolean:
console.log(Boolean(0)); //false
console.log(Boolean(1)); //true
console.log(Boolean(2)); //true
console.log(Boolean(-2)); //true
//除0以外均为true

(2)String

Number:
console.log(Number("1")); //1
console.log(Number("1a")); //NaN
console.log(parseInt("1a")); //1
console.log(parseInt("a1")); //NaN
//使用Number进行转换时必须是纯数字字符串,否则为NaN
//使用parseInt转换时,头部必须有数字,否则为NaN
//parseInt是全局函数,不属于Number,与Number强制转换有区别 Boolean:
console.log(Boolean("")); //false
console.log(Boolean("true")); //true
console.log(Boolean("false")); //true
//String为空是flase,其他均为true

(3)Boolean

Number:
console.log(Number(false)); //0
console.log(Number(true)); //1 String:
输出对应的字符串

(4)null

Number:
console.log(Number(null)); //0 String:
输出对应的字符串 Boolean:
console.log(Boolean(null)); //false

(5)undefined

Number:
console.log(Number(undefined)); //NaN
//此种方式强制转换依旧为非数字 String:
输出对应的字符串 Boolean:
console.log(Boolean(undefined)); //false

码字不易,后面还会放出各种文章,喜欢的关注一下我吖,你们的关注是我最大的动力

github:github.com/hn-failte

个人博客:hn-failte.github.io

JavaScript变量转换的更多相关文章

  1. 六天玩转javascript:javascript变量与表达式(1)

    说明 本系列属于进阶系列,语常用语法等不在本系列介绍范围之内. 在我刚开始做一个程序员并开发项目的时候,我总是喜欢使用开发语言的各种特性,每次m$发布新版C#的时候我总是会把开发者预览版下好,亲自体验 ...

  2. JavaScript 变量、类型与计算

    变量类型 变量计算 变量 题目: JavaScript 中使用typeof能得到的有哪些类型? ``` 1.1 变量类型 (1).js中的数据类型:字符串.数字.布尔.数组.对象.Null.Undef ...

  3. JavaScript 基础(一) - JavaScript的引入方式,JavaScript 变量命名规则,JS 的五种基本数据类型,ECMAScript 算数运算符,逻辑运算符

    JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  4. javascript变量的作用域

    javascript变量的作用域 基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象  讲一个值赋值给变量时,javascript解析器首先要确定是基本类型 ...

  5. JavaScript 变量声明提前

    <JavaScript权威指南>中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声 ...

  6. JavaScript 变量

    一,JavaScript 变量(存储信息的容器) 与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y). 变量可以使用短名称(比如 x 和 y),也可以使用描 ...

  7. javascript变量声明 及作用域

    javascript变量声明提升(hoisting) http://openwares.net/js/javascript_declaration_hoisting.html 可能要FQ一下 java ...

  8. JavaScript 变量作用域

    一. 变量声明 变量用var关键字来声明,如下所示: 变量在未声明的情况下被初始化,会被添加到全局环境. JavaScript执行代码时,会创建一个上下文执行环境,全局环境是最外围的环境.每个函数在被 ...

  9. 【转】javascript变量声明 及作用域

    javascript变量声明提升(hoisting) javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 先看 ...

随机推荐

  1. OO第二单元多线程电梯总结

    OO第二单元多线程电梯总结 第一次作业 设计思路 Input为输入线程,负责不断读取请求并将读到的请求放入调度器中. Dispatcher为调度器,是Input线程和Elevator线程的共享对象,采 ...

  2. 处理机调度算法( RR 、HRRF)

    1. P117页,练习15:最高响应比( HRRF) 2. P119页,练习22(2):时间片轮转( RR ) 3. 现设定采用三级反馈队列调度算法,三个队列分别为0.1和2,对应时间片为2.4.8. ...

  3. Linux 平台 tcpdump 抓包

    一. 在ecs上准备好mysql客户端命令 二. 开启抓包,抓包方法如下:Linux 平台: 1. 打开一个到ECS的ssh连接,并以root身份登录.在该窗口运行下列命令tcpdump -i any ...

  4. Java使用quartz实现作业调度

    在spring boot中使用quartz实现作业调度的功能,简单易用. 什么是Quartz? Quartz是Java领域最著名的.功能丰富的.开放源码的作业调度工具,几乎可以在所有的Java应用程序 ...

  5. C++实现文件内字符数、单词数、行数的统计

    先给出github上的代码链接以及项目需求 1. 项目简介 这个项目的需求可以概括为:对程序设计语言源文件统计字符数.单词数.行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处 ...

  6. INTERVAL YEAR TO MONTH数据类型

    INTERVAL YEAR TO MONTH数据类型 Oracle语法: INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO ...

  7. STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收

    参考资料:1.ST HAL库官网资料 2.https://blog.csdn.net/u014470361/article/details/79206352#comments 一.STM32CubeM ...

  8. 启动eclipse could not create the java Vittual Machine

    查询并几种方法: 1.都说是 eclipse.ini  环境初始文件的内存问题,续增大堆内存大小,具体配置如,如果找不到问题所在可以试试(该方法是确定环境变量没问题下试行) -Xms64m-Xmx25 ...

  9. Servlet中的jsp内置对象

    Servlet和jsp本质相同,那么为什么还要使用jsp呢,原来的servlet又有什么不好的呢. Servlet和jsp可以做完全相同的事情,就要借助jsp的内置对象们,比如request,resp ...

  10. PWM of STM32

    下面是STM32用来产生PWM得文件,分别是PWM.c和PWM.h /***************************************************************** ...