js知识点

js有预解析阶段,变量声明提升只提升定义,不提升值

console.log(a);//undefined
var a=10;

基本数据类型

Number、String、Boolean、Undefined和Null

复杂数据类型

Object、Array、Function、RegExp、Date、Map、Set等 

使用typeof运算符可以检测值或者变量的类型

js知识点_第1张图片 

3e8表示300,000,000 

二进制数值0b开头 八进制数值以0开头 十六进制数值以0x开头

js知识点_第2张图片

数字11和字符串'11'在语义上是不同的,前者表达一个数量 ,后者是一个文本

repl环境:read读取 eval执行 print打印 loop循环

字符串常用的方法

charAt()方法可以得到指定位置的字符

substring(a,b)方法得到从a开始到b结束(不包括b处)的子串

substr(a,b)方法得到从a开始的长度为b的子串,其中b可以省略,表示到字符串结尾(说明:a可以是负数,表示倒数位置)

slice(a,b)方法得到从a开始到b结束(不包括b处)的子串 它和substring(a,b)区别在:slice(a,b)中参数a可以是负数 和slice(a,b)中参数a必须小于参数b

面试题

js知识点_第3张图片

toUpperCase()转为大写 toLowerCase()转为小写

indexOf()方法返回某个特定的字符串值在字符串值首次出现的位置,找不到则返回-1

一个没有被赋值的变量的默认值是undefined,而undefined的类型也是undefined

即:undefined又是值,又是一种类型,这种类型只有它自己一个值

用typeof检测null结果是object 数组用typeof检测结构也是object

数据类型转换

字符串变为数字:纯数字字符串能变为数字,不是纯数字的字符串将转为NaN

布尔值变为数字:true变为1,false变为0

undefined和null变为数字:undefined变为NaN,null变为0

Number('123');    //123
Number('123.4');    //123.4
Number('123年');    //NaN
Number('2e3');    //2000
Number('');    //0

Number(true);    //1
Number(false);    //0

Number(undefined);    //NaN
Number(null);    //0

parseInt函数功能将字符串转为整数

parseFloat函数功能将字符串转为浮点数 功能与parseInt()类似

parseInt('3.14');    //parseInt()将自动截掉第一个非数字字符之后的所有字符 3
parseInt('3.14是圆周率');    //所有文字都将被截掉 3
parseInt('圆周率是3.14');    //如果字符串不是以数字开头,则转为NaN
parseInt('3.99');    //3 不会四舍五入

parseFloat(true);    //NaN 说明:true隐式转换字符串true

使用String()函数

使用toString()方法将值转为字符串(常用) 

使用Boolean()函数

数字变为布尔值:0和NaN转为false,其他数字都转为true

字符串变为布尔值:空字符串变为false,其他变为true

undefined和null变为布尔值:都变为false

Boolean(123);    //true
Boolean(0);    //false
Boolean(NaN);    //false
Boolean(Infinity);    //true
Boolean(-Infinity);    //true

Boolean('');    //false
Boolean('abc');    //true
Boolean('false');    //true

Boolean(undefined);    //false
Boolean(null);    //false

表达式和操作符

隐式类型转换:如果参与数学运算的某操作数不是数字型,那么js会自动将此操作数转为数字型 

隐式转换本质是:内部调用Number()函数

true+true //2
false+2    //2
3*'2天'    //NaN

js使用了IEEE754二进制浮点数算术标准,这会使一些个别的小数运算产生丢失精度问题

解决办法:在进行小数运算时,调用数字的toFixed()方法保留指定的小数位数

幂Math.pow(a,b)和开根号Math.sqrt()

Math.pow(2,3)    //8
Math.sqrt(81)    //9
Math.sqrt(-81)    //NaN

向上取整Math.ceil()和向下取整Math.floor() 

Math.ceil(-2.4)    //-2
Math.floor(-2.4)    //-3

相等和全等

两个等号==运算符不比较值的类型,它会进行隐式转换后比较值是否相等

三个等号===运算符既要比较值的类型,又要比较值

不相等和不全等类似相等和全等

5=='5';    //true
5==='5';    //false

面试题

null和undefined用==进行比较涉及隐式强制类型转换(ES5规范中规定)

null和undefined用===进行比较时结果为false是因为类型不同:

typeof null -->object

typeof undefined -->undefined

NaN == NaN //false

NaN === NaN //false

1 == true    //true
1 === true    //false
0 == false    //true
0 === false    //false
0 == undefined    //false
0 === undefined    //false

undefined == null    //true
undefined === null     //false

 isNaN()机理:只要该变量传入Number()的执行结果是NaN,则isNaN()函数都会得到true

isNaN(undefined)    //true
isNaN('3天')    //true
isNaN(null)    //false

非运算(隐式使用Boolean()函数) 

!0    //true
!undefined    //true
!''    //true
!'mooc'    //false

逻辑运算顺序:非-->与-->或 

运算顺序:非运算-->数学运算-->关系运算-->逻辑运算

闰年判断:条件满足其一即可:能被4整除且不能被100整除/能被100整除且能被400整除

BMI判断:体重(公斤)/身高的平方(米)

你可能感兴趣的:(js,vue.js,node.js,前端)