一.在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



 

 

 

 

posted on 2019-11-25 00:20  从精通到陌生  阅读(177)  评论(0编辑  收藏  举报