什么是JS?
与浏览器进行交互的脚本语言,需要预解析
js的数据类型可以随意被修改(重点) ,它属于弱类型语言
JavaScript是一门脚本语言(web相关),需要浏览器的支持(解析器 谷歌v8引擎),JavaScript是一个弱语言(没有绝对的语法 他的数据类型定义不是由对应的修饰符来定义 而是根据对应的值来定义的(值什么类型变量就是什么类型)),JavaScript里面由三个内容构成,BOM(浏览器对象模型 操作浏览器),DOM(文档对象模型 操作html文档的),ECMAScript(语法规范 es3 (兼容各大主流浏览器)es5(兼容普通版本浏览器) es6 (兼容相关的高版本浏览器))
JS数据类型
string 字符串
number 数值
boolean 布尔
null 空
undefined 未定义
object array function... 引用数据类型(对象地址分配的 可以变)
变量命名规则
由字母 下划线 数字 $组成
不能以数字开头
不能是保留字和关键字
驼峰命名法
见名知意
数值类型 number
var num = 10
字符串类型 string (单引号和双引号表示的都是字符串)
var str = '字符串'
var str = "字符串"
布尔类型 boolean (true 真 false 假)
var isTrue = true
未定义类型 undefined(当前没有给值)undefined是null的派生
var a
console.log(a)
空类型 null 只有在null值的情况下才为null类型
var isNull = null
console.log(isNull)
引用数据类型(对象地址分配的 可以变的)
object array function ...
typeof 用于判断对应的数据类型(检索对应的数据类型)返回对应的数据类型的英文名(字符串)
typeof 变量 //返回对应的数据类型的英文
varstr='字符串'
varnumber=10
varis=true
varun
varisNull=null
console.log(typeofstr);//string
console.log(typeofnumber);//number
console.log(typeofis);//boolean
console.log(typeofun);//undefined
console.log(typeofisNull);//null返回的是object null是一个空对象引用
// typeof的typeof是string
console.log(typeoftypeofisNull);//null返回的是object null是一个空对象引用
typeof null 返回的是一个object的字符串其他返回的是对应的类型的字符串
function 返回的是function object返回的是object array返回的也是一个object
类型转换
数据类型 大-->小 显示转换
小-->大 隐式转换
任意类型转字符串(toString方法调用(undefined不能使用) String方法调用)
varnumber=10
varstr=number.toString()
varstr1=String(number)
console.log(typeofstr)
console.log(typeofstr1)
varbl=true
varstrBl=bl.toString()
varstrBl1=String(bl)
console.log(typeofstrBl);
console.log(typeofstrBl1);
//undefined是不能调用toString
varun
// var unStr = un.toString() //报错
varunStr=String(un)
console.log(typeofunStr)
任意类型转number类型
使用number方法转换
使用parseInt 或者parseFloat (截取)
varstr='123'
varnumber1=Number(str)
console.log(number1)
varstr1='12.1a3a'
varnumber2=Number(str1)
// not a number 当出现无法转换的内容的时候 会出现NaN NaN是属于number类型的
console.log(number2)
console.log(typeofnumber2)
// parseInt 转换为整型 parseFloat 转换浮点类型
//从前面开始截取能够转换的数值 如果前面没有可以转换的数值那么结果就是NaN
varnumber3=parseInt(str1)
console.log(number3);
varnumber4=parseFloat(str1)
console.log(number4);
//转换布尔类型的时候 true会转成1 false会转成0
varbool=false
varnumber5=Number(bool)
console.log(number5);
//und无法转换为number 会出现NaN的值
varund
varnumber6=Number(und)
console.log(number6)
//null转为number类型会出现0
varn=null
varnumber7=Number(n)
console.log(number7);
注意事项
任意类型转number类型无法转换会出现NaN NaN属于数值类型
null转number结果为0 undefined转number结果为NaN
isNaN专门判断当前是否是NaN类型 出现NaN返回true 没有返回false
console.log(isNaN(NaN));//true
转换为boolean类型
Boolean方法
// 任意类型转boolean
varstr=''//非空则为true
console.log(Boolean(str))
varnumber=0//非0和非NaN则为true
console.log(Boolean(number))
// undefined和null转换为boolean都是false
console.log(Boolean(undefined))
console.log(Boolean(null))
注意事项
string类型转boolean非空就是true 空字符串为false
number类型转boolean 非0和非NaN就是true 0和NaN为false
undefined和null转换boolean都是false
number的特殊值
NaN 当你需要转为number类型的时候转换不成功出现的值
无穷大 Infinity
varnan=NaN//表示当前无法转换为number类型
varnumber1=+Infinity//无穷大
varnumber2=-Infinity//无穷小
console.log(typeofnumber1)
运算符及表达式
算术运算符
+ - * / % ++ --
//数值的运算
varnumber1=10
varnumber2=20
console.log(number1+number2);//30
console.log(number1-number2);//-10
console.log(number1*number2);//200
console.log(number1/number2);//0.5
//大数取小数得到的是余数 小的数取大的数得到的是本身(小的数)
console.log(number1%number2);//10
console.log(40%2);//0
console.log(40%3);//1
console.log(5%3);//2
console.log(3%5);//3
//+法运算 如果对应的有一个值的类型是字符串 那么得到就是字符串类型 (字符串进行拼接)
console.log('1'+2);//12
console.log('1'+true);//1true
console.log('1'+undefined);//1undefined
console.log('1'+null);//1null
//除此之外的所有都是会转为对应的数值然后进行运算 默认的转换用到的是number方法
console.log(null+true);//1
console.log(undefined+true);//NaN NaN进行任何数值运算得到的数值都是NaN
console.log(undefined*true);//NaN NaN进行任何数值运算得到的数值都是NaN
console.log(null*true);//0
console.log('123'/1);
console.log('123a'/1);
++和--
++ 自增
var number = 10
number++ //number=number+1
console.log(number)//11
-- 自减
var number = 10
number-- //number=number-1
console.log(number)//9
++前置和后置的区别
前置先执行 先++再执行其他的代码
后置后执行 先走了对应的其他代码以后再执行++操作
varnumber=10
number++//number=number+1
console.log(number)//11
number--//number=number-1
console.log(number)//10
//++前置和后置 --前置和后置
//前置先执行 先+再执行其他的代码
//后置后执行 先走了对应的其他代码以后再执行++操作
console.log(number++);//10
console.log(number);//11
console.log(++number);//12
console.log(--number);//11
console.log(number--);//11
console.log(number);//10
注意事项
取余的规则 大的数值取余小的数值得到是余数 小的数值取余大的数值得到的是他本身
字符串进行加法运算会进行字符串的拼接 得到的是字符串
其他的任意操作都会先转为对应的number类型再进行运算
NaN做任意运算返回的结果都是NaN
逻辑运算符
&& || !
// && 与 俩个都是true 则返回true(最后一个true) 有一个是false就返回false (第一个false)
console.log(true&&1)//1
console.log(0&&false)//0
console.log('0'&&undefined&&NaN)//undefined
console.log('undefined'&&10&&20)//20
// || 或 有个true直接取第一个true 如果都是false取最后一个false
console.log(true||1)//true
console.log(0||false)//false
console.log('0'||undefined||NaN)//'0'
console.log('undefined'||10||20)//'undefined'
// ! 非 取反操作 将对应的真的变假的 假的变真的 返回的结果是一个boolean类型
console.log(!1);//false
注意事项
&& 与
两个都是true 则返回true(最后一个true) 有一个是false就返回false (第一个false)
|| 或
有个true直接取第一个true 如果都是false取最后一个false
! 非
取反操作 将对应的真的变假的 假的变真的 返回的结果是一个boolean类型
条件运算符
> < = >= <= == === != !==
返回的是一个boolean类型的值 (true或者false)
vara=10
varb=20
console.log(a>b);//false
console.log(a<b);//true
//不同类型的比较
// 字符串和对应的数值比较 比较的过程会进行数值类型的转换 NaN 出现NaN结果就是false
varstr='abc'
varstr1='123'
console.log(str>a);//false 出现了NaN
console.log(str1>a);//true
//其他的比较也是同样的
varbool=true
console.log(bool<2);//true
console.log(bool>null);//true
console.log(bool>undefined);//false undefined会转换NaN
//== 判断俩个值是否相等 进行转换操作
console.log('123'==123);//true 字符串的数值和普通数值进行比较他是返回true
console.log(true==1);//true
console.log(NaN==NaN);//false
console.log(undefined==null);//true
console.log(NaN!=NaN);//true
//=== 恒等 全等俩个类型以及值完全相等 基于==
console.log('123'===123);//false
console.log(NaN===NaN);//false
console.log(undefined===null);//false
注意事项
undefined==null为true undefined===null 为false
字符串和字符串相比较那么对应的比较的ascii码(先比首字母 大写字母比小写字母要小 排在前面比后面的要小)
在对应的非数值的比较上会自动转为数进行比较
NaN==NaN为false 在正常比较中没有取反符号的情况下出现NaN就是false
恒等是基于==之上的 ==为false对应的恒等必定为false(==只比较值 ===要比类型)
赋值运算符
= += -= *= /= %=
// 赋值运算 =
vara=10
a+=10//a=a+10 20
a*=10//a=a*10 200
a/=10//a=a/10 20
a-=10//a=a-10 10
a%=2//a=a%2 0
console.log(a);//0
位移运算符
<< >>
位移运算是将对应的数值转为二进制进行移位运算(将一个数值转为二进制使用除二取余法)
// 怎么快速把2变成8 后面补零
console.log(2<<2);
扩展内容(进制转换)
常用的进制分为 2进制 4进制 8进制 16进制(颜色设置 最大的值为f)
将对应的10进制转为其他进制得到的是字符串 toString
varnumber=8
console.log(number.toString(2))
将其他进制转为10进制得到就是数值 parseInt
varstr='1f'//16进制的字符串
console.log(parseInt(str,16))//将16进制转为10进制