Bootstrap

JavaScript 基础知识 Day02

一、数据类型的检测

        可以使用 typeof 检测定义变量的数据类型

var num=12;
var boo=true;
var str='你好';
var und;
var nul=null;

        用打印在控制台输出变量的数据类型

console.log(typeof num);
console.log(typeof boo);
console.log(typeof str);
console.log(typeof und);
console.log(typeof nul);//object  只有null是object类型 其他基本数据类型都是自己的名字

        还可以在window输入框内输入数据,在控制台打印输出,你输入的数据类型

var num = prompt('请输入一个数字');
console.log(typeof num);

        只有null是object类型 其他基本数据类型都是自己的名字

二、数据类型的转换

1、其他类型转换为布尔 Boolean

        null表示空  所以会被转换为false、undefined表示未定义 空  所以会被转换为false

console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
        1.数字类型转换Boolean

        只有0会被转换为false  其他所有非0数字都会被转换为true

console.log(Boolean(1));
console.log(Boolean(0));
console.log(Boolean(3));
console.log(Boolean(-4));
        2.字符串类型转换Boolean

        只有空字符串会被转换为false,其他所有非空都会被转换为true

console.log(Boolean("郑佳一")); //true
console.log(Boolean("彭昌辉")); //true
console.log(Boolean("宁成")); //true
console.log(Boolean("扩大倒是非常cdajkfkjf123312!@#$%^&*()_+")); //true
console.log(Boolean("")); //false

2、其他类型转换为数字

        1.Number

        字符串通过number转换后,如果字符串中包含非数字字符,那么结果为NaN;NaN表示:不是一个数字类型

console.log(Number(true)); //1
console.log(Number(false)); //1
console.log(Number("李海鹏")); // NaN  Not a Number
console.log(Number("3李海鹏")); // NaN  Not a Number
console.log(Number("3")); // 3
console.log(Number("-3e2")); // 3

        另外两个特例undefined和null会输出NaN和null

console.log(Number(undefined)); //NaN  Not a Number
console.log(Number(null)); //null  空  0
        2. parseInt

        字符串转换为数字类型时,parseInt会从第一个开始检测如果遇到数字类型就保留继续往下检测,当遇到不是数字类型的就会停止检测。如果第一个遇到的就不是数字类型,会直接返回NaN

        布尔类型(true,false)转换数字类型会直接返回NaN 同样的空值null也会返回NaN

console.log(parseInt("3李海鹏")); //3
console.log(parseInt("李3海鹏")); //NaN
console.log(parseInt(true)); //NaN
console.log(parseInt(null)); //
console.log(parseInt("3.555555555555")); //3
console.log(parseInt("3e2")); //3
console.log(parseFloat("3.强强强强555555555555")); //3

        数字类型是可以计算的例如:

var num = 3;
console.log(Number(num) + 1);

        是会先转换为数字类型再进行计算,而如果num变量的值不能够被转换为数字类型就会返回NaN或者报错

3、其他类型转换为字符串  

        1.String

        会直接将其他类型里的所有内容转换为字符串包括特殊符号(*@#¥%)等

console.log(String(true));
console.log(String(123));
console.log(String(undefined));
        2.toString

        本义还是转换为字符串,只是拥有了可以将数字转换为不同的进制

var num = 5;
console.log(num.toString(2));

        toString括号内的参数表示是几进制

4、隐式数据类型转换

        部分数据类型会在浏览器里自动帮我们进行类型转换,比如加减乘除的隐式类型转换:

var str1='123';
var str2='456';

console.log(str1-str2);//-333

        isNaN 是用来判断小括号里是不是NaN,如果是数字类型,输出false 反之则输出true:

console.log(isNaN(123));//false
console.log(isNaN('aa123'));//true

三、运算符

        1. ( )优先级最高

        2. 一元运算符  ++   --   !

        3. 算数运算符  先*  /  %   后 +   -

        4. 关系运算符  >   >=   <   <=

        5. 相等运算符   ==   !=    ===    !==

        6. 逻辑运算符 先&&   后||

        7. 赋值运算符

1、常见的算数运算符(+,-,*,/)

var num1=10;
var num2=20;

console.log(num1+num2);//30

        如果是数据类型加号会进行计算

var str1='10';
var str2='20';
console.log(str1+str2);//1020
console.log(str1-str2);//-10
console.log(str1*str2);//200
console.log(str1/str2);//0.5

        如果加号两边有一个是字符串类型,就表示的是拼接作用,而(-,*,/)则会被浏览器进行隐式转换为数字类型,进行计算

2、取余运算符 %

        他会输出余数,而如果余数为零表示可以被整除

console.log(15%6);//3

3、() 会提高优先级

        先算括号里的,再算乘除,最后算加减

console.log((1+2+3)*(5/1)+6-8);

4、赋值运算符 =

        它表示的是将等号右边的值赋值给左边的变量;等号右边的num表示的是值,左边的num表示的是num这个变量

var num = 10;
num = num + 5;
num = num - 5;
num = num * 5;
num = num / 5;

        还可以进行简写

num += 5;
num -= 5;
num *= 5;
num /= 5;

5、自增自减运算符 ++

        num++ 表示 num 自我增加1

        num-- 表示 num 自我减少1

var num = 99;

num++;
num--;

        符号在前和在后效果是不一样的

        (1)符号如果在变量的后面表示 先将变量拿来使用 之后再自增

        (2)符号如果在变量的前面表示 先自增 之后再将变量拿来使用

var num = 99;
console.log(num++ + 1);
console.log(++num + 1);

        运算练习

var a = 6;
var b = 2;
var c = a++ - --b + ++a - 5 - --b + a++;

6、逻辑运算符  ||  和 && 和 !

        1.与  和 且   &&

(1)两个条件只要有一个不满足 最终的结果就是不成立  只有所有都成立 最终的结果才是成立;

(2)如果第一个条件 成立 那么会直接输出第二个条件;

(3)如果第一个条件不成立 那么就会直接输出第一个条件

console.log(true && false); // false
console.log(true && true); // true
console.log(false && false); // false
        2.或  或者 ||

(1)两个条件只要有一个成立 最终的结果就是成立 如果都不成立 结果不成立

(2)如果第一个条件成立 就会直接输出第一个条件

(3)如果第一个条件不成立 就会直接输出第二个条件

console.log(true || false); // true
console.log(false || false); // false
console.log(true || true); // true
        3.非、不是 、取反  !

(1)非只会对布尔值生效  非布尔值会先转换为布尔值再取反

(2)最终的结果一定是一个布尔值

console.log(!3);

7、关系判断运算符:>、<、==、>=、<=、!=、===、!==

        关系运算符 最终输出的结果一定是一个布尔值  更像是一个判断条件

        1.大于、小于、等于:>、<、==

一个 = 表示 赋值    ==  表示等于

var num1 = 15;
var num2 = 9;
console.log(num1 > num2);
// 大于
console.log(num1 < num2);
// 小于
console.log(num1 == num2);
// 等于
        2.大于等于、小于等于、不等于:>=、<=、!=
var num1 = 15;
var num2 = 9;
console.log(num1 >= num2);
// 大于等于
console.log(num1 <= num2);
// 小于等于
console.log(num1 != num2);
// 不等于
        3.等于、全等于、不全等于:==、===、!==

等于      ==   会将等号两边的内容 隐式转换成相同的数据类型

全等于 ===  两边的内容必须完全相同  类型也必须相同

不全等于

console.log(1 == "1");
// 等于  ==
console.log(1 === "1");
// 全等于 === 
console.log(1 !== "1");
// 不全等于  !==

四、总结

        本章对数据类型和各种运算符进行了总结,阐明了各种数据类型之间是如何进行转换的,以及对各种运算符的运用。

;