JavaScript基础篇详解
全部的数据类型:
基本数据类型:
undefined
Number
Boolean
null
String
复杂数据类型:
object
①Undefined:
>>>声明但未初始化的变量:typeof -> undefined
aler -> undefined
未声明变量: typeof -> undefined
alert -> 报错
②Null:
>>>typeof值为null的变量返回object
>>>undefined派生自null,undefined==null返回true;
③Boolean:
>>>Boolean()函数:
1.Boolean:ture false
2.String:非空字符串都为真,空字符串为假
3.Number:0为假,一切非0均为真
4.null/NaN/undefined:全为假
5.object:null为假,其他全为真
④Number:
>>>NaN:与任何值都不相等,包括NaN
>>>isNaN():
1.纯数字字符串:false
2.浮点型数字字符串:false
3.包含字母等其他字符的字符串:true
4.空字符串:false
5.bool类型,false
6.Null类型:false
7.undefined:true
>>>Number():将其他类型转换为数值类型
[字符串类型转数值]
>>>字符串为纯数值字符串时,会转为对应的数值
>>>字符串为空字符串时,会转为0 ""-> 0
>>>字符串包含其它非数字字符时,不能转换"111a"->NaN
>>>浮点型数字字符串,转为对应浮点数
[Boolean转数值]
true->1 false->0
[null/undefined转数值]
null ->0 undefined的变量 ->NaN
[object类型转数值]
会先调用valueOf函数确定函数是否有返回值,再根据上述情况转换返回值
>>>parseInt():将其他类型转为浮点数数值类型
[将字符串转化为数值类型]
原理: 1.忽略空格找到第一个非空格字符,如果不是数字或者负号返回NaN,所以空字符串为NaN(Number()返回0)
2.直到解析到结束,或遇到非数字字符(小数点是非数字字符)
3.返回所有被解析成功的字符。
>>>空字符串, 不能转:结果为NaN!!!
>>>纯数字字符串 能转 "123" ->123
>>>浮点型数字字符串:"123.5"->123
>>>包含其他字符的字符串,会截取第一个非数值字符前的数字部分
"123a456"->123
"a123a456"->NaN
>>>parseInt()只能转string和number类型,Boolean/null/undefined均为NaN
>>>number类型的浮点型转为整数型,整数型不变
>>>parseFloat():
原理: 1.忽略空格找到第一个非空格字符,如果不是数字或者负号返回NaN,所以空字符串为NaN(Number()返回0)
2.直到解析到结束,或遇到非数字字符(小数点是非数字字符)
3.返回所有被解析成功的字符。
[将字符串转为数值]
>>>使用方式同parseInt(),但是,转化小数字符串时,保留小数点。
[传进来的参数为number]
>>>number类型,浮点型不变,整型返回整型。
⑤String:
[将其他类型转为字符串方法]
①number,bool,object调用使用toString()方法;num.toString();
②null,undefined没有toString()方法,使用String()函数:String(value);
③让一个空字符串加此变量 -> ''+value
⑥Object:
操作符:
①自增++,自减--操作符:
>>>对于非数值操作数也是先使用Number()函数进行类型转换,在执行+1-1操作
1.字符串:可转,转为数字,然后+1,字符串变量变为数值变量。
不可转,将变量值设为NaN,字符串变量变为数值变量。
2.布尔值:true -> 1 然后加减1
false -> 0 然后加减1
3.数值型:浮点型和整型直接加减1
②一元加、减操作符
>>>在非数值前使用上述两个操作符,规则与Number()相同。
>>>一元减操作符会将数值变为负
③布尔操作符:一共有三个 非 ! 与&& 或||
>>>逻辑非:它应用于任何数据类型,返回值均为布尔类型。
它首先将操作数转换为一个布尔值,然后求反。
>>>规则如下:
1.对象 -> false
2.字符串:空字符串 -> true
非空字符串 -> false
3.数值 0 -> true
非0数值 -> false
4.null/NaN/undefined -> true
>>>同时使用两个逻辑非操作符,等同于使用Boolean()
>>>逻辑与:它可以应用于任何类型的操作数。
当有一个操作数不是布尔类型,返回值不一定是布尔值。
>>>规则如下:
1.如果第一个操作数是对象,返回第二个操作数。
2.如果第二个操作数是对象,只有在第一个操作数求值结果true的情况下,才会返回该对象。
3.如果两个操作数都是对象,返回第二个操作数。
4.如果有一个操作数是null/NaN/undefined,返回null/NaN/undefined.
>>>逻辑与操作是短路操作:
只要遇到结果为false的操作数,无论后面是什么,都将不在求值,直接返回false。
>>>逻辑或:它可以应用于任何类型的操作数。
当有一个操作数不是布尔类型,返回值不一定是布尔值。
>>>规则如下:
1.如果第一个操作数是对象,返回第一个操作数。
2.如果第一个操作数的求值结果为false,返回第二个操作数。
3.两个操作数都是对象,返回第一个操作数。
4.如果两个操作数都是null/NaN/undefined,返回null/NaN/undefined.
>>>逻辑与操作是短路操作:
只要遇到结果为true的操作数,无论后面是什么,都将不在求值,直接返回true。
④乘性操作符:包括乘法、除法和取余
规则如下:(转为number)
1.都是数值,数值计算
2.有NaN,返回NaN
3.有任意一个操作数不是数值,对其调用Number(),然后比较
⑤加性操作符:(包括加法,减法)
加法 规则如下:(任意一方为string都转为string,两方都不为string转为number)
1.都是数值,进行算数相加
2.有NaN,返回NaN
3.任意一方为字符串,将非字符串转为字符串,然后进行字符串连接
number,boolean调用toString()方法
null,undefined使用String()函数
4.两个操作数都为字符串,进行字符串连接
5.两个操作符都不是string,number,则调用Number()之后进行算数相加
6.一方为number,一方为除string以外的类型,调用Number(),然后算数相加。
减法规则如下:(转number)
1.都是数值,算数相减
2.有NaN返回NaN
3.任意一个操作数不是数值,调用Number(),然后算是相减。
⑥关系操作符:(>= <= > <):(返回值为布尔型)
关系操作符规则如下:(都为string,比较,一方不为string,两方全转为number)
1.都是数值进行数值比较
2.都是字符串,进行首字母字符编码比较
3.一方是number,将另一方转为number
4.有布尔值、null、undefined,先转为number再判断
5.任何NaN参与的关系比较,返回false
⑦相等操作符:== !=(返回值为布尔型)
== !=规则如下:(一方不为string,string bool转为number再判断,null,undefined无论如何都不转)
1.有布尔值,先转为number,再判断
2.字符串和数值、布尔比较,将字符串转为数值
字符串和字符串之间直接比较
数值和数值直接比较
3.null和undefined永远相等
4.不将nu时ll和undefined进行任何转换
5.有NaN参与,==返回false,!=返回true
=== !==
undefined === null ×
类型必须一致,且相等才能成立
typeof操作符:
①未定义->undefined
②字符串->string
③true/false->boolean
④数值->number
⑤函数->function
⑥对象/null->object
>>>相比于数据类型,少了null,多了function
>>>在ECMAScript中,函数是对象,不是一种数据类型。
然而函数有一些特殊的属性,因此通过typeof操作符区分函数和对象还是有必要的。
>>>对声明但未初始化和未声明的变量进行typeof操作结果都为undefined
但是alert未初始化返回undefined
alert未定义会报错。
JavaScript基础篇详解的更多相关文章
- 【HANA系列】【第一篇】SAP HANA XS使用JavaScript数据交互详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第一篇]SAP HANA XS ...
- 从mixin到new和prototype:Javascript原型机制详解
从mixin到new和prototype:Javascript原型机制详解 这是一篇markdown格式的文章,更好的阅读体验请访问我的github,移动端请访问我的博客 继承是为了实现方法的复用 ...
- 走向DBA[MSSQL篇] 详解游标
原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...
- python 3.x 爬虫基础---Urllib详解
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...
- 【HANA系列】SAP HANA XS使用JavaScript数据交互详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...
- [转]JavaScript异步机制详解
原文: https://www.jianshu.com/p/4ea4ee713ead --------------------------------------------------------- ...
- JavaScript(4)---BOM详解
JavaScript(4)---BOM详解 之前写过一篇有关DOM的博客:JavaScript(2)---DOM详解 DOM有个顶级对象叫:document.同样BOM中也有顶级对象叫 window. ...
- Python基础知识详解 从入门到精通(七)类与对象
本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
随机推荐
- kali下纯文本与窗口环境切换
切到纯文本环境,想返回 试了半天ctrl+alt+f7不行, 最后我想试试ctrl+alt+f8竟然成了: 而且那是之前以root账户登录图像界面时切换回去是f8,普通用户是f9 ,为何如此,我还不 ...
- 用 C++ 模板元编程实现有限的静态 introspection
C++ 中的奇技淫巧大部分来源于模板技术,尤其是模版元编程技术(Template Meta-Programming, TMP).TMP 通过将一部分计算任务放在编译时完成,不仅提高了程序的性能,还能让 ...
- (转) 修改weblogic部署的应用名称
通过weblogic管理后台console进行发布本地项目的时候,它会默认以WEB-INF的上一级目录作为访问路径, 如,假如你的项目WEB-INF目录的上一层是WebRoot,那么发布后, 访问的路 ...
- Generative Adversarial Nets(GAN Tensorflow)
Generative Adversarial Nets(简称GAN)是一种非常流行的神经网络. 它最初是由Ian Goodfellow等人在NIPS 2014论文中介绍的. 这篇论文引发了很多关于神经 ...
- 用PS修改PNG格式图标的颜色
需求:将黑色的PNG格式图标,更改为其它颜色 原始图标: 原始图标 - 黑色 方法1: 图层样式 -> 颜色叠加 选择颜色叠加 选择想要的颜色 方法2: 更换颜色 一 ...
- java ArrayList迭代过程中删除
第一种迭代删除方式: 第二种迭代删除方式: 第三种迭代删除: 第四种迭代删除: 第五种迭代删除: 第六种: ArrayList中remove()方法的机制,首先看源码: 真正的删除操作在fastRem ...
- css不常见属性之pointer-events
MDN 上介绍为 CSS 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件的 target.pointer-events 属性值有: /* Keyword values */ po ...
- ZROI 19.08.09模拟赛
传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. A \(70pts:\) 维护一个栈,从一侧向另一侧扫描,如果新加入的元素与当前栈顶相同,则出栈,否则进栈.显然一个子串是括号序列,当 ...
- DevOps之持续集成Pipeline(一)
一.Pipeline介绍 Jenkins2.0中最大的一个特性就是Pipeline,实际使用中Pipeline已经超越了我们对jenkins本身的理解,可能在之前我们大多数把Jenkins当做 ...
- Sparrow 开发板化身电脑音量调节器
前言 原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正. 之前的新浪不能用啦,这次部分图片用的sm.ms的图床,加载慢,请耐心,准备换图床. 1.开箱简介 来填坑了!这次是 Sparrow ...