一、数据类型的转换。
javascript是一个弱类型语言有数据决定了我们的数据类型是什么
1 number 、"1"string、 number+number=number、string+number=string
1.隐式转换:
默认都是转为数字,再运输
特殊:1、不管是什么运算,只要没有碰上字符串,都会转为一个数字 true-->1 flase-->0 underfined-->NaN null-->0
2、+运算并且碰上字符串,则为拼接,最后的结果也就是字符串
3、- * + / % ,就是字符串也转化为数字,前提是纯数字,但是如果出现一个非数字,则为NaN "100"-->100 "100a"-->NaN
NaN:not a number:不是一个数字,但是确实是数字类型,只不过在三界之外
NaN 全是缺点
1.不在三界之内,不大于,不小于,不等于任何值,包括自己
2.参与任何算数运算+ — * / %,结果仍为NaN
问题
正是因为NaN参与任何比较运输结果都为false,甚至自己都不认识自己,所以我们没有办法用一个普通的比较运算来判断X是不是NaN
解决
isNaN(x):此方法不管你放的x是什么都会悄悄的隐式转为数字 true-->说明是一个有效数字 flase-->说明是一个NaN
目的
防止客户恶意输入,但是目前为止,只能防止用户输入的必须是一个数字(比如验证的话我们做不了:正则学了才能做)
显示转换:也叫强制转换
1、何时转换使用:隐式转换出来的结果不是我们想要的,先强制转换为需要的数据再运算
2、如何使用:
1.转为字符串 var str=xx.toString(); xx不能是underfined和null,underfined和null不能使用操作,因为一切的页面上获取来的数据型都是字符串
2.转为数字:3种
1.parselent; parse解析 int整形:解析一个整数 执行原理:从左向右,依次读取每个字符,碰到非字字符就停止,不认识小数点,如果一来就不认识则为NaN去掉单位
2.parseFloat(x); parse解析 Float浮点数,解析为一个小数 执行原理:几乎和parselnt一致,但是认识第一个小数点,去掉单位
以上两种方法很重要;但是x只能是数字或者字符串,不能是别的,如果是别的统一的认为是不认识的,不认识的结果就是NaN了,个人感觉,这两个方法是专门用于str to num
3.Number(x);万能的,任何人都可以转为数字,垃圾。此方法完全等效于隐式转换的底层,就是悄悄地使用方法,所以我们绝对不会手动使用还不如 x-0 /1 *1 %1
三、Function:函数也称之为方法:
需要预定好的,可以反复使用的一个代码段
rotate(45deg)完成一个根据角度值顺时针旋转45度功能 Url(图片路径)完成一个根据图片路径显示图像的功能
JS中的函数完成了一个。。。。的功能
1.创建函数 function 函数名(){代码段/若干操作}
2.调用函数 1.直接在js中程序员写几次调用,就会执行几次操作:函数名 2.让用户自己触发:
3. 1.以后任何时候左右都要封成一个函数,因为函数的js地位很高,属于第一等公民 2.不希望打开页面立即执行 3.能反复执行 4.是一个独立的功能体 5.你不是自己释放内存,函数调用完毕会自动释放内存/变量
4.带参数的函数 语法:形参:其实就是一个变量名 只不过需要写与Var这个关键字,每个形参之间用“,”间隔,形式参数,简称形参 function函数名(形参,。。。){函数体;} 调用:实参;实际参数 函数名(实参,。。。)
特殊:手残党个数以及顺序和形参的个数顺序都要一一对应
5.普通函数:操作永远都是固定的 带参数的函数:根据传入的实参执行略微不同的操作
四、分支结构
1.代码流程控制语句
1.顺序结果:默认的,代码从上向下
2.分支结构:根据条件不同,选择部分代码执行
3.循环结构:根据条件满不满足,考虑要不要再执行一次相同或相似代码
2,关系/比较运算符 > < >= <= == != 结果是布尔值 注意==才叫比较 =叫赋值右边的东西放到了左边保存起来
3.逻辑运算符: &&:与(并且):全部条件都满足,结果为true 只要有一个条件不满足,结果为flase ||:或:全部条件都不满足,结果为false 只要有一个条件满足,结果为true !:颠倒布尔值
4.分支的语法:
1.一个条件一件事,满足就做,不满足不做 if(条件){操作}
2.一个条件两件事,满足就做第一件,不满足就做第二件 if(条件){操作;}else{默认操作}
3.多个条件多件事:满足谁就做谁 if(条件){操作;}else if(条件2){操作2}else if(条件3){操作3}else{默认操作} else可以省略,但不推荐