一.js基础
-
js产生于1995年【世界第一台电脑1946年 中国1952年】
-
ECMA欧洲计算机制造商协会定义的标准 各大浏览器厂商将EAMA作为各自javascript的实现基础
1.内核:
谷歌 | 以前是Webkit内核,现在是Blink内核 |
---|---|
IE(edge) | Trident内核 |
火狐 | Gecko内核 |
sapari | Webkit内核 |
opera | 最初是自己的Presto内核,后来是Webkit,现在是Blink内核 |
2. javascript组成
- ECMA Script :【规定了js的语法,类型,语句,关键字,操作对象等 ES6 2015.6】
- DOM:document object model 文档对象模型
- BOM:browser object model 浏览器对象模型
- script标签可以放到html页面中任意位置
- js代码由上至下执行
二、数据类型
弱类型语言:变量类型是由它所包含的数据决定的
1、数据类型
1、typeof() 判断数据类型函数
2、数值型number
3、布尔bollean
3、字符串string
4、undefined
5、null
6、object
2、类型转换
- 隐式类型转换:
- 显式类型转换(强制类型转换)
Number() 【将其他数据类型转换成数值型】
console.log(Number("12.23")) //12
console.log(Number(true)) //1
console.log(Number(false)) //0
console.log(Number("")) //0
console.log(Number("null")) //0
console.log(Number("undefined")) //NaN
console.log(Number("NaN")) //NaN
parseInt()
console.log(parseInt("hello")) //NaN
console.log(parseInt("23aa")) //23
console.log(parseInt(12.23)) //12
console.log(parseInt(0.12)) //0
console.log(parseInt(true)) //NaN
console.log(parseInt(false)) //NaN
console.log(parseInt("")) //NaN
console.log(parseInt(25,16)) //37 16进制数,输出10进制
console.log(parseInt(25,8)) //21
console.log(parseInt(1001,2)) //***9
console.log(parseInt(25,10)) //25
NaN:not a Number 非数值【一个本来要返回数值的操作数,而没有返回数值的情况】
parseFlot()
console.log(parseFloat("23.34")) //23.34
console.log(parseFloat("23.45.78")) //23.45
3.进制转换
- 其他进制转换成10进制
parseInt(25,16)
parseInt(25,8)
parseInt(25,10)
parseInt(101,2)
- 十进制转换成其他进制
v1 =23;
v1.toString(16)
v1.toString(8)
v1.toString(2)
v1.toString(10)
4. 常用方法
isFinite() //判断是否是正负有穷
console.log(isFinite(200e500)) //false
console.log(isFinite(200e5)) //true
isNaN() //判断是否为非数值
console.log(isNaN("hello")) //true
console.log(isNaN(true)) //false
console.log(isNaN(false)) //false
console.log(isNaN("10")) //false
(1) /任何涉及NaN的操作,都返回NaN/
console.log(NaN/8) //NaN
console.log(NaN+8) //NaN
console.log(NaN-8) //NaN
console.log(NaN*8) //NaN
(2) /NaN与任何值都不相等,包括t他本身NaN/
NaN==NaN //false
0/0 //NaN
5、常见面试题
console.log(null*5) //***NaN 0【隐式转换】
NaN*3 //NaN
undefined*5 //** NaN【undefined隐式转换undefined】
"hello"*5 //*** NaN【hello隐式转换NaN】
"23"+5 //235
"23"*5 //115
6、布尔值(Boolean类型)
true false
if(10>0){
}else{ }
if((10>5)==true){} 等价于 if(10>5){}
if(!10>5){}
类型转换
Boolean()
console.log(Boolean(23)) //true
console.log(Boolean(0)) //false
console.log(Boolean("hello")) //true
console.log(Boolean("")) //false
console.log(Boolean(null)) //false
console.log(Boolean(undefined)) //false
true false
数值型 非空 0
字符型 非空串 ""
undefined 返回false
null 返回false
object 任意对象返回都是true
7.undefined类型
(1)变量只声明,未赋值
var a;
console.log(typeof(a)) //undefined
alert(a) //undefined
(2) alert© //报错
(3)函数没有返回值,默认undefined
function f1(){
alert("hello")
}
var r=f1()
console.log(r) //undefined
(4)调用函数时,应该提供参数,但没有提供,该参数返回undefined
function f1(a,b){
alert(a);
alert(b);
}
f1(3)
console.log(r) //3 undefined
8、null 空类型 【对象】
var a=null
console.log(typeof(a)) //object null 是一种特殊的object
var b ={}
b.a=23
b.f1=function(){}
b=null
if(b==null){}
9、object 对象类型
对象就是一定属性和方法的封装体,通过对象能够引用到这些方法和属性
10、typeof
console.log(typeof(1)) //number
console.log(typeof(NaN)) //number
console.log(typeof(Number.MAX_VALUE)) //number
console.log(typeof(Number.MIN_VALUE)) //number
console.log(typeof(Infinity)) //number
console.log(typeof("123")) //string
console.log(typeof(true)) //boolean
console.log(typeof(Date)) //function
console.log(typeof(c)) //undefined
console.log(typeof(undefined)) //undefined
console.log(typeof([])) //object
console.log(typeof(Math)) //object
console.log(typeof(window)) //object
console.log(typeof(document)) //object
console.log(typeof(null)) //object
(1)数值类型 typeof返回number
console.log(typeof(1)) //number
console.log(typeof(NaN)) //***number
console.log(typeof(Number.MAX_VALUE)) //number
console.log(typeof(Number.MIN_VALUE)) //number
console.log(typeof(Infinity)) //number
(2)字符串类型,typeof返回 string
typeof("123") string
(3)布尔类型,typeof返回boolean
typeof(true) boolean
(4)对象、数组、null、typeof返回object
console.log(typeof([])) //object
console.log(typeof(Math)) //object
console.log(typeof(window)) //object
console.log(typeof(document)) //object
console.log(typeof(null)) //object
(5)函数类型,typeof返回function
function f1(){
}
console.log(typeof(eval))
console.log(typeof(f1));
console.log(typeof(Date)) //function
(6)未定义的便力量或undefined,typeof返回 undefined
三、流程控制语句
1、
if(){
}else if(){
}else if(){
}else{
}
2、
switch(){
case:语句体;
break;
case:语句体;
break;
case:语句体;
break;
default 语句体
}
3、
for(var i= 0;i<5;i++){
语句体
}
for each / for in
4.while循环
5.do while 循环 至少执行一次
6、break 立即跳出循环
7、continue 停止当前循环,进入下一次循环