一.在JS中一共有6种数据类型
1. String 字符串
2. Number 数值
3. Boolean 布尔值
4. Null 空值
5. Undefined 未定义
6. Object 对象

其中 String Number Boolean Null Undefined属于基本数据类型,而Object属于引用数据类型

二 .String 字符串
1.在JS中字符串需要使用引号引起来,双引号或单引号都行
2.str变量 "str"字符串
3.引号是不能嵌套的

三.typeof
- 通过typeof可以来检查一个变量的类型
- 语法:typeof 变量
- 它会将检查的结果返回
- 使用typeof检查一个字符串时,会返回string
- 使用typeof检查一个数值时,会返回number

四.

* JS中可以表示的最大的数字
* Number.MAX_VALUE 来获取最大值
* 1.7976931348623157e+308
*
* Number.MIN_VALUE 0以上的最小值
* 5e-324
*
* 如果我们使用的数字超过了最大值,则会返回Infinity,表示无穷
* ±Infinity 正负无穷,它的类型也是Number
*
* 特殊的数字
* NaN (Not A Number)
* - 用来表示一个非法的数字
* - 使用typeof检查一个NaN时,也会返回number

五.进制

需要表示一些其他进制的数字
- 十六进制数字:
0x数字
- 八进制数字
0数字
- 二进制的数字
0b数字 IE不支持 Hbuilder也不支持

var b = 0x10; //十六进制的10
b = 070; //八进制的10
b = 0b10; //二进制的10

六.Boolean

Boolean(布尔值)
- 我们可以使用布尔值来进行逻辑判断
- 布尔值只有两个true和false
- true表示逻辑的真
- false表示逻辑的假
- 使用typeof检查一个布尔值时,会返回boolean

七.

Undefined(未定义)
- Undefined表示一个声明但是没有赋值的变量
- Undefined的类型只有一个值 undefined
- 使用typeof检查一个Undefined类型的数据时,会返回undefined

Null(空值)
- Null类型只有一个值,就是null
- null值专门用来表示为空的对象
- 使用typeof检查一个Null类型的值时,会返回object

八.

将其他的数据类型转换为String
- 方式一:
- 调用被转换数据类型的toString()方法
- toString()方法不会改变原变量的值,而是将值转换为字符串并返回
- 由于null和undefined中没有toString()方法,
所以不能调用toString()将他们转换为字符串

- 方式二:
- 调用String()函数
- 将被转换的数据做为参数传递给String()
- 原理:
- 对于具有toString()方法的类型来说,
String()会调用它们的toString()方法来将其转换为字符串
- 对于null和undefined来说,
会将null 直接转换为 "null"
将undefined 直接转换为 "undefined"

九.

/*
转换为Number
- 方式一:
- 使用Number()函数
- 转换的情况:
1.对于字符串来说
- 如果字符串是一个合法的数字,则将其转换为对应的数字
- 如果字符串不是一个合法的数字,则转换为NaN
- 如果字符串是一个空串或纯空格的字符串,则转换为0

2.对于布尔值来说
- true转换为1
- false转换为0

3.对于Null
- null转换为0

4.对于Undefined
- undefined转换为NaN
* */

var b = "123px";//NaN
b = "123";//123
b = "abc";//NaN
b = ""; //0
b = " "; //0

//调用Number()函数将b转换为数字
b = Number(b);

//布尔值
b = true; //1
b = false; //0
b = Number(b);

//Null
b = null;
b = Number(b);

//Undefined
b = undefined;
b = Number(b);

/*
* 除了使用Number()函数,JS中还为我们提供了两个函数,
* 专门用来将一个字符串转换为数字的
* parseInt()
* - 将一个字符串转换为整数
* - 使用该函数解析字符串时,它会从字符串的左侧开始解析,
* 直到解析到最后一个有效的整数位
* parseFloat()
* - 将一个字符串转换为小数
* - parseFloat()和parseInt()类似
* 不同的是它可以解析到有效的小数位
*/

var c = "456px"; //456

c = "789a678b456"; //789

c = "123.456"; //123

/*
* 像"070"这样的字符串,火狐 chrome等浏览器会当成10进制数字进行解析,转换为70
* 但是IE8,会将其当成8进制的数字解析,解析为56
*
* 在使用parseInt时,可以传递以进制作为参数,来说明数字的进制
*/
c = "070";

//调用parseInt将其转换为Number
c = parseInt(c,10);

/*console.log(c);
console.log(typeof c);*/

var d = "123.45px";//123.45
d = "123.45.67"; //123.45
d = "hello123"; //NaN

d = parseFloat(d);

console.log(d);
console.log(typeof d);

十.

/*
* 转换为Boolean
* - 使用Boolean()函数
* - 转换的情况:
* - 对于数字
* - 除了0和NaN剩下都是true
*
* - 对于字符串
* - 除了空串剩下的都是true
*
* - null和undefined都是false
*
* - 对象默认都是true
*/

var a = 1; //true
a = -100; //true
a = Infinity; //true
a = 0; //false
a = NaN; //false

//调用Boolean()来将a转换为Boolean
a = Boolean(a);

a = "hello"; //true
a = "false"; //true
a = ""; //false
a = " "; //true
a = "0"; //true
a = Boolean(a);

a = null;
a = Boolean(a);

a = undefined;
a = Boolean(a);

 十一.算术运算符

+可以对符号两侧的值进行加法运算,并将运算结果返回
当对非数字(除了字符串)进行加法运算时,它会将其先转换为数字,然后再运算
如果对两个字符串进行相加,则会进行拼串的操作,将两个字符串拼成一个字符串
任何值和字符串进行加法运算时,都会先将其转换为字符串,然后在和字符串进行拼串的操作
我们经常通过为一个任意的值加 空串的形式来将其转换为字符串,
这种形式我们称为隐式的类型转换,原理实际上也是通过String()函数转换的,
但是这种方式更加简单。

a = true + false;//1
a = false + null; //0
//任何值和NaN做任何运算都是NaN
a = NaN + 10; //NaN
a = undefined + 100; //NaN
a = "hello" + "world"; //"helloworld"
a = 11 + "abc"; //"11abc"

- 可以对符号两侧的值进行减法运算
 * 可以对符号两侧的值进行乘法运算
 /可以对符号两侧的值进行除法运算

这些符号的运算规则和数学中是一摸一样的,
不同的是在对非数字类型进行运算时,会先将其转换为数字然后在运算
我们还可以通过为一个任意的数据类型 -0 *1 /1 来将其转换为Number类型
原理和Number()函数一样。

% 可以对符号两侧的值进行取模(取余)运算
 同样对非数字进行取模的运算,也会转换为数字然后在运算

十二.一元运算符

//可以使用一元的+或-将其他数据类型转换为Number,原理和Number()函数一样
a = "123";
a = +a;  //123 number类型的

十三.逻辑运算符

! 逻辑非
 非可以对一个布尔值进行取反操作
true变成false,false变true
如果为一个值取两次反和没取一样
如果对一个非布尔值进行取反操作,它会将其转换为布尔值然后再运算
 利用这个特点,我们可以为任意的数据类型去两次反,来将其转换为布尔值,
原理和Boolean()函数一样

/*
* 为a取两次反,来将其转换为布尔值
*/

a = 1;
a = !!a;  //true

十四.

对于非布尔值,做与或运算时,它会先将其转换为布尔值,然后在运算 最终返回变量的原值!
- 非布尔值的与运算:
如果第一个值为false,则返回第一个。如果第一个值为true,则返回第二个

- 非布尔值的或运算
如果第一个值为true,则返回第一个。如果第一个值为false,则返回第二个

//如果两个值都为true,则返回后边的
var result = 2 && 10; //10

result = 0 && 1; //0

result = 1 || 2; //1
result = 0 || 2; //2

十五.关系运算符

如果对非数值类型进行关系运算,则会将他们转换为Number然后在比较

var result = 5 < 4; //false

result = true < "2"; //true
result = null < 5; //true

//NaN < 5 NaN和任何值比较都是false
result = undefined < 5; //false
result = undefined > 5; //false
result = undefined >= 5; //false
result = 5 < "4"; //false

* 当关系运算符的两侧都是字符串时,它不会将字符串转换为Number,而是会比较字符串的Unicode编码

result = "a" < "b"; //true

result = "abcdefghijk" < "b"; //true
result = "5" < "4"; //false
result = "5" < "40"; //false

十六.相等运算符

相等运算符,它可以用来判断两个值是否相等,如果相等,则返回true,否则返回false
* - 如果对两个类型不同的变量进行相等比较,会先将其转换为相同的类型,然后再比较
* (至于具体转换为什么类型,不定,但是大部分情况是转换Number)

//console.log("1" == true); //true

//字符串和布尔值比时,都转换为Number然后在比
//console.log("2" == true); //flase
//console.log(null == 0);//false
//由于undefined衍生自null,所以这两个类型的值做相等比较时会返回true
//console.log(null == undefined);//true
//NaN不和任何值相等,包括它自己
//console.log(NaN == NaN); //false

var a = NaN;

//判断a的值是否是NaN
//console.log(a == NaN);
/*
* 在JS中为我们提供了一个isNaN()函数,
* 这个函数专门可以判断一个值是否是NaN,如果是则返回true,否则返回false
*/
//console.log(isNaN(a));

/*
* ===
* - 全等运算符,可以判断两个值是否全等,如果全等则返回true,否则返回false
* - 全等和相等的区别就是相等会做自动的类型转换,而全等不会,
* 使用全等时,如果两个值的类型不同,直接返回false
*/

//console.log(1 === "1"); //false
//console.log(true === "1"); //false
//null和undefined相等,但是不全等
//console.log(null === undefined); //false

前端笔记5-js1的更多相关文章

  1. 2.前端笔记之css

    title: 1.前端笔记之CSS date: 2016-04-05 23:05:51 tags: 前端 categories: w3c --- 作者:刘耀 **出处:http://www.liuya ...

  2. 1.前端笔记之html

    title: 1.前端笔记之HTML date: 2016-04-04 23:21:52 tags: Python categories: Python --- 作者:刘耀 **出处:http://w ...

  3. 写给后端的前端笔记:浮动(float)布局

    写给后端的前端笔记:浮动(float)布局 这篇文章主要面向后端人员,对前端有深刻了解的各位不喜勿喷. 起因 前一阵子我一个后端的伙伴问我,"前端的左飘怎么做?",我立马就懵了,& ...

  4. 写给后端的前端笔记:定位(position)

    写给后端的前端笔记:定位(position) 既然都写了一篇浮动布局,干脆把定位(position)也写了,这样后端基本上能学会css布局了. 类别 我们所说的定位position主要有三类:固定定位 ...

  5. 前端笔记知识点整合之JavaScript(三)关于条件判断语句、循环语句那点事

      一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力 ...

  6. 前端笔记-html

    前端笔记html 前端三大利器,html(本源),css(着装),js(动作) html 学习html就是学习一套规则能够被浏览器识别,在页面中展示,一个页面只能运行一个html 标签 <> ...

  7. 移动端前端笔记 — 遇到的常见JS与CSS问题及解决方法 ( 摘自zdwzdwzdw)

    笔者接触移动前端快一年了,特将平时的一些笔记整理出来,希望能够给需要的人一些小小的帮助.同时也由于笔者的水平有限,虽说都是笔者遇到过使用过的,但文中可能也会出现一些问题或不严谨的地方,望各位指出,不胜 ...

  8. 前端笔记之Vue(一)初识SPA和Vue&webpack配置和vue安装&指令

    一.单页面应用(SPA) 1.1 C/S到B/S页面架构的转变 C/S:客户端/服务器(Client/Server)架构的软件. C/S 软件的特点: ① 从window桌面双击打开 ② 更新的时候会 ...

  9. 前端笔记之ES678&Webpack&Babel(下)AMD|CMD规范&模块&webpack&Promise对象&Generator函数

    一.AMD和CMD规范(了解) 1.1传统的前端开发多个js文件的关系 yuan.js中定义了一个函数 function mianji(r){ return 3.14 * r * r } main.j ...

  10. 前端笔记之ES678&Webpack&Babel(上)初识ES678&Babel&let和const&解构&语法

    一.ES版本简介和调试运行方法 1.1 ECMAScript简介 MDN手册:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript JavaS ...

随机推荐

  1. 浅谈集合框架二 List、Set常用方法

    最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出.初学者对于本篇博客只建议作为参考,欢迎留言共同学习. 之前有介绍集合框架的体系 ...

  2. HDU 1828“Picture”(线段树+扫描线求矩形周长并)

    传送门 •参考资料 [1]:算法总结:[线段树+扫描线]&矩形覆盖求面积/周长问题(HDU 1542/HDU 1828) •题意 给你 n 个矩形,求矩形并的周长: •题解1(两次扫描线) 周 ...

  3. WPF 从零开始开发 dotnet Remoting 程序

    本文告诉大家如何不使用框架,从零开始开发一个 dotnet remoting 程序 在我的另一篇博客 WPF 使用RPC调用其他进程 就大概告诉了大家如何在 WPF 使用 dotnet remotin ...

  4. javascript异步编程 Async/await

    Async/await Async/await 在学习他之前应当补充一定的 promise 知识 它是一种与 promise 相配合的特殊语法,目前被认为是异步编程的终级解决方案 值得我们每一个人学习 ...

  5. 基于Springboot+Junit+Mockito做单元测试

    前言 前面的两篇文章讨论过< 为什么要写单元测试,何时写,写多细 >和<单元测试规范>,这篇文章介绍如何使用Springboot+Junit+Mockito做单元测试,案例选取 ...

  6. vue-learning:38 - router - 前端路由的发展

    前端路由的发展 参考博客 前端路由是什么东西? 什么是路由 在jQuery时代,我们使用<a href="https://www.example.com/example/home.ht ...

  7. vue-learning:26 - component - 组件三大API之一:prop

    组件三大API之一: prop prop的大小写 prop接收类型 字符串数组形式 对象形式: type / required / default / validator prop传递类型: 静态传递 ...

  8. 微软软件开发技术二十年回顾-Windows DNA篇

    五. Windows DNA篇 微软的Windows分布式因特网应用体系(简称Windows DNA)是微软创建新一代高适应性商业解 决方案的框架,它使公司能够充分地挖掘数字神经系统的优点.Windo ...

  9. FreeSql配合仓储实现软删除

    该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前段时间使用FreeSql作为ORM,写了一个简单的CMS,在这里总结一下其中的使用心得. 仓储配合全局过滤器 1. 统一的删除标志 如:数据库字 ...

  10. 使用IDEA创建基于Maven SpringMvc项目

    使用IDEA创建基于Maven SpringMvc项目 1.通过程序启动——create project,或者file--New-projec打开New project 2.自定义groupid等信息 ...