JavaScript变量转换
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变量转换的更多相关文章
- 六天玩转javascript:javascript变量与表达式(1)
说明 本系列属于进阶系列,语常用语法等不在本系列介绍范围之内. 在我刚开始做一个程序员并开发项目的时候,我总是喜欢使用开发语言的各种特性,每次m$发布新版C#的时候我总是会把开发者预览版下好,亲自体验 ...
- JavaScript 变量、类型与计算
变量类型 变量计算 变量 题目: JavaScript 中使用typeof能得到的有哪些类型? ``` 1.1 变量类型 (1).js中的数据类型:字符串.数字.布尔.数组.对象.Null.Undef ...
- JavaScript 基础(一) - JavaScript的引入方式,JavaScript 变量命名规则,JS 的五种基本数据类型,ECMAScript 算数运算符,逻辑运算符
JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- javascript变量的作用域
javascript变量的作用域 基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象 讲一个值赋值给变量时,javascript解析器首先要确定是基本类型 ...
- JavaScript 变量声明提前
<JavaScript权威指南>中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声 ...
- JavaScript 变量
一,JavaScript 变量(存储信息的容器) 与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y). 变量可以使用短名称(比如 x 和 y),也可以使用描 ...
- javascript变量声明 及作用域
javascript变量声明提升(hoisting) http://openwares.net/js/javascript_declaration_hoisting.html 可能要FQ一下 java ...
- JavaScript 变量作用域
一. 变量声明 变量用var关键字来声明,如下所示: 变量在未声明的情况下被初始化,会被添加到全局环境. JavaScript执行代码时,会创建一个上下文执行环境,全局环境是最外围的环境.每个函数在被 ...
- 【转】javascript变量声明 及作用域
javascript变量声明提升(hoisting) javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 先看 ...
随机推荐
- Linux 网络编程 入门-常用函数
网络连接无外乎服务器和客户端两方面的编程. 对于服务器大致的流程是:1---调用socket函数创建套接字 2---调用bind函数分配IP地址和端口号 3---调用listsen函数将套接字转为可接 ...
- XML文件的解析—DOM、SAX
一.DOM 解析 思路:获得Document对象,遍历其中节点获得需要的内容 要点: Document : DocuemntBuilderFactory --newDocumentBuilder - ...
- OO第9-11作业总结
一. 规格化设计 规格化抽象,即将执行的细节抽象为用户所需求的行为(模块做什么). 主要作用在于提高工程设计中的可维护性,可读性,明确功能,使整个编程任务变得清晰有序以减少程序BUG. 说其发展历 ...
- P4149 [IOI2011]Race
对于这道题,明显是点分治,权值等于k,可以用桶统计树上路径(但注意要清空); 对于每颗子树,先与之前的子树拼k,再更新桶,维护t["len"]最小边数; #include < ...
- 渗透测试的理论部分4——开放式Web应用程序安全项目
开放式Web应用程序安全项目(Open Web Application Security Project OWASP) 定期退出Top 10 project(排名前十的安全隐患防守规则) 公开了编写安 ...
- Monkey压力测试操作步骤说明
一.需配置java环境和android环境 JDK安装包:链接:https://pan.baidu.com/s/1SlnBOS0f3m2wVpEZBPfmag ...
- temp--贵州银行
-------住宿----泊乐酒店----8905----与朱聿一起住 2018年 1月3日晚 1月4日晚 1月5日晚 1月6日晚 1月7日晚 1月8日晚 1月9日晚 已结清! ======= ...
- windows 10 安装可视化mycat
前提: 1.安装配置好JDK环境 2.安装配置好mysql 3.安装配置好Navicat 一.下载mycat git:https://github.com/MyCATApache/Mycat-down ...
- SSH通过密钥登陆
A服务器上操作 ssh-keygen -t rsa/dsa 后面所带参数rsa/dsa为加密方式,默认为dsa [root@localhost ~]# ssh-keygen Generating pu ...
- Go的Get命令兼容公司Gitlab仓库的HTTP协议
对于公司的私有Gitlab仓库,没有对https支持,在使用最新版本的go get命令时,需要使用-insecure参数来支持http,但如果导入的包里边依赖了需要https的仓库,就不好使了,折腾了 ...