一.js基础
1.js产生于1995年
1946年第一台电子计算机产生,1952年中国引入第一台电子计算机
2. ECMA 欧洲计算机制造商协会
各大浏览器厂商将ECMA 作为各自javascript的实现基础
谷歌 webkit(开源的) 现在是Blink内核
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
ie(edge) Trident内核
ie(11):User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Safari/537.36 Edg/103.0.1264.37
火狐 Gecko内核
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0
safari Webkit
opera Webkit内核 现在是Blink内核
3.javascript组成
javascript
|
| | |
ECMA Script DOM BOM
ECMA Script:规定了js的语法.类型.语句.关键字.操作符对象等
ES5
ES6 2015年6月
ES7-ES11
DOM:document object model 文档对象模型
BOM:browser object model 浏览器对象模型
4.Script代码可以放到html页面中任意位置
5.js代码由上至下执行
二.数据类型
弱类型语言—变量类型是由它所包含的"数据"决定的
字符串string
数值型number
布尔型boolean
undefined
null
object
1、数值型
// v1=20e500 //正无穷大
// console.log(v1)
// v1=-20e500 //负无穷大
// //js 整型最大表示范围 253—2-53
2.类型转换
(1)隐式类型转换:自动将一种数据类型转换到另一种数据类型的过程
console.log(“50”-“30”) //20 number
(2)显示类型转换(强制类型转换):需要手动转换到目标类型
将其他数据类型转换为数值型
Number()
console.log(Number(12.34)) //12.34
console.log(Number(true)) //1
console.log(Number(false)) //0
console.log(Number(“”)) //0
console.log(Number(NaN)) //NaN
console.log(Number(null)) //0
console.log(Number(undefined)) //NaN
paseInt()
console.log(parseInt(12.34)) //12
console.log(parseInt(0.12)) //0
console.log(parseInt(“23aa”)) //NaN
console.log(parseInt(true)) //NaN
console.log(parseInt(false)) //NaN
console.log(parseInt(“30e5”)) //30
console.log(parseInt(25,16)) //37
console.log(parseInt(25,8)) //21
console.log(parseInt(1001,2)) //9
console.log(parseInt(25,10)) //25
paseFloat()
console.log(parseFloat("23.34")) //23.34
console.log(parseFloat("23.45.78")) //23.45
NaN: not a number 非数值
表示一个本来要返回数值的操作数而没有返回数值的情况
NaN不等于任何数值
3.进制转换
(1)其他进制转换为十进制
paseInt(25,16)
parseInt(25,8)
parseInt(25,10)
parseInt(101,2)
(2)十进制转换为其他进制
v1=23
v1.toString(16)
v1.toString(8)
v1.toString(2)
4.常用方法
isNaN() //判断是否为非数值
1.任何涉及NaN的操作都返回NaN
console.log(NaN/8)
console.log(NaN+8)
console.log(NaN-8)
console.log(NaN*8)
2.NaN与任何值都不相等,包括它本身
console.log(NaN==NaN) //false
console.log(0/0) //NaN
isFinite() //判断是否是正负有穷
console.log(isFinite(200e5)) //true
console.log(isFinite(200e500)) //false
5.布尔值
true false
if(10>0){
}else{
}
if((10>5)==true){}
等价于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
6.undefined类型
(1)变量只声明未赋值
var a
console.log(typeof(a)) //undefined
alert(a) //undefined
alert(c) //报错
(2)函数没有返回值,默认undefined
function f1(){
alert("hello")
}
var r=f1()
console.log(r)
(3)调用函数时,应该提供参数但没有提供,该参数返回undefined
function f1(a,b){
alert(a)
alert(b)
}
f1(3)
7.null 空类型
var a=null
document.write(typeof(a)) //object null是一种特殊的object
var b={}
b.a=23
b.f1=function(){}
b=null
8.object 对象类型
对象就是一定属性和方法的封装体,通过对象能够引用到这些方法和属性
9.*** typeof ***
(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) 字符串类型,返回string
console.log(typeof(“123”)) //string
(3) 布尔类型,返回boolean
console.log(typeof(true)) //boolean
(4) 对象,数组,null,typeof返回object
console.log(typeof(window)) //object
console.log(typeof(document)) //object
console.log(typeof(null)) //object
console.log(typeof(Math)) //object
console.log(typeof([])) //object
(5) 函数类型,typeof返回function
console.log(typeof(Date)) //function
function f1(){}
console.log(typeof(f1))
console.log(typeof(eval))
(6) 没有定义的变量或undefined本身,typeof返回undefined
console.log(typeof©) //undefined
console.log(typeof(undefined)) //undefined