发表于: 2021-05-02 21:13:49
1 2394
今天完成的事情:JS字符串转换数字;JS有限状态机
明天计划的事情:理解JS作用域与作用域链;JS对象;
收获:
有限状态机:(Finite-state machine)是一个非常有用的模型;有限状态机的写法,逻辑清晰,表达力强,有利于封装事件。
它有三个特征:状态总数(state)是有限的;
任一时刻,只处在一种状态之中;
某种条件下,会从一种状态转变(transition)到另一种状态。
下面例子可以用到有限状态机:网页上有一个菜单元素,鼠标悬停的时候,菜单显示;鼠标移开的时候,菜单隐藏。如果使用有限状态机描述,就是这个菜单只有两种状态(显示和隐藏),鼠标会引发的状态转变。
fsm.current :返回当前状态。
fsm.is(s) :返回一个布尔值,表示状态s是否为当前状态。
fsm.can(e) :返回一个布尔值,表示事件e是否能在当前状态触发。
fsm.cannot(e) :返回一个布尔值,表示事件e是否不能在当前状态触发。
允许为每个事件指定两个回调函数:
onbeforewarn:在warn事件发生之前触发。
onafterwarn(可简写成onwarn) :在warn事件发生之后触发。
也允许为每个状态指定两个回调函数:
onleavegreen :在离开green状态时触发。
onentergreen(可简写成ongreen) :在进入green状态时触发。
可以为所有的事件和状态指定通用的回调函数:
onbeforeevent :任一事件发生之前触发。
onleavestate :离开任一状态时触发。
onenterstate :进入任一状态时触发。
onafterevent :任一事件结束后触发。
JS字符串转换数字的方法:转换函数、强制类型转换、利用js变量弱类型转换。
转换函数有两种:parseInt()和parseFloat();
parseInt()把值转换成整数;
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
parseFloat()把值转换成浮点数;
parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN
强制类型转换:
Boolean(value)——把给定的值转换成Boolean型;
Number(value)——把给定的值转换成数字(可以是整数或浮点数);
String(value)——把给定的值转换成字符串。
js变量弱类型转换:
例:
<script>
var str= '012.345 ';
var x = str-0;
x = x*1;
</script>
弱类型转换,只进行了算术运算,实现了字符串到数字的类型转换
评论