发表于: 2017-06-06 22:52:44

2 1147


今天完成的事情:

1、js1的代码改好,师兄提出的开始闪按钮能连续点击,而且连续点击后,点击结束闪按钮不能结束九宫格颜色的变化。

修改的思路是:1、对开始闪按钮在周期函数里对它设置disabled=true; 使它再点击开始闪按钮后不可选,而且从新设置了他的cursor:wait;

                        2、修改了html 代码和js代码,html里不会出现js相关的东西。实现了分离。

2、写出了js2的玩家配比页面,不过js的内容还没有完成。
明天计划的事情:

1、尽力完成js2.

遇到的问题:


收获:

js1的深度思考:

1.JS有哪些数据类型和常用方法?

js 有5种基本的数据类型。分别是 Boolean Number String Undefined Null
null值代表一个空对象指针。
Boolean类型有2个字面值 true false (需小写)。方法有转型函数Boolean()——将其他值转换为对应的Boolean值。
可以转化为true的有:非空字符串、非零数字值(包括无穷大)、任何对象
可以转换为false的有:空字符串、数字0和NaN、null、undefined
Number类型
1、数值自面量格式有:十进制、8进制、16进制
其中8进制第一位必须是0,然后是8进制数字序列(0~7);
其中16进制第一位必须是0x,然后是16进制数字序列(0~9及A~F);
在进行算数计算时,8进制和16进制数值都会被转换为10进制数值进行计算。
2、isFinite() 这个方法用来判断一个数值是否在+Infinity 和-Infinity 之间,是的话返回true。
3、NaN与任何值都不想等,包括NaN本身。
4、把非数值转换为数值的方法:Number()、parseInt()、parseFloat().
其中Number()可以用于任何数据类型。而后俩个只能用字符串类型。
String类型

1、把值转换为字符串的方法。

1、toString() ———null和undefined没有这个方法。2、String()该函数能将任何类型的值转化为字符串。3、使用+操作符,把该值与一个字符串相加。


1种复杂的数据类型:Object


2.定时器有哪些用法?

JS中有两个定时器,setTimeout和setInterval

 window.setTimeout(expression,milliseconds); window.setInterval(expression,milliseconds); 其中,expression可以是用引号括起来的一段代码,也可以是一个函数名,到了指定的时间,系统便会自动调用该函数,当使用函数名作为调用句柄时,不能带有任何参数;而使用字符串时,则可以在其中写入要传递的参数。 window.setTimeout("fun(num1,num2)",1000); 
当需要传参时,必须使用字符串形式。
两个方法的第二个参数是milliseconds,表示延时或者重复执行的毫秒数。
setTimeout
定义
在指定的延迟时间之后调用一个函数或执行一个代码片段。
let timeID = setTimeout(func,delay)

第一个参数为回调函数,第二个参数为延时的时间,

setTimeout方法的返回值是一个数字,为该定时器的ID,这个ID是定时器的唯一标识,用clearTimeout(timeID)可以消除该定时器

我们可以使用window.setTimeout或setTimeout,两个写法基本一样,只不过window.setTimeout将setTimeout函数作为全局window对象的一个属性来引用。
setInterval
定义
周期性地调用一个函数(function)或者执行一段代码。
语法和setTimeout一样

如果想要取消定时执行,和clearTimeout方法类似,可以调用window.clearInterval方法。

clearInterval方法同样接收一个setInterval方法返回的值作为参数。

例如: //定义一个反复执行的调用 var id=window.setInterval("somefunction",10000);
//取消定时执行     window.clearInterval(id); 
关于第二个参数delay
另外javascript都是以单线程的方式运行于浏览器的javascript引擎中,实际应用中复杂的任务中需要排队执行,这就可能导致定时器时间不准,
由于javascript 的事件循环机制,导致第二个参数并不代表延迟delay毫秒之后立即执行回调函数,而是尝试将回调函数加入到事件队列。实际上,setTimeout 和 setInterval 在这一点上处理又存在区别:
  • setTimeout:延时delay毫秒之后,啥也不管,直接将回调函数加入事件队列。
  • setInterval: 延时delay毫秒之后,先看看事件队列中是否存在还没有执行的回调函数(setInterval的回调函数),如果存在,就不要再往事件队列里加入回调函数了。

所以,当我们的代码中存在耗时的任务时,定时器并不会表现的如我们所想的那样。


3.ID和Class有什么区别?

ID是表示着标签的身份有唯一性,Class 在程序中称“类”
在CSS里的ID不一定为JS而设置的,但是同样ID在页面里也只能出现一次,并且是唯一性

区别:

1、在CSS文件里书写时,ID加前缀"#";CLASS用"."

2、id一个页面只可以使用一次;class可以多次引用。
3、对于CSS而言,id和class都是选择器,唯一不同的地方在于权重不同。id的优先级较高
4、对于html而言,id和class都是dom元素的属性值。不同的地方在于id属性的值是唯一的,而class属性值可以重复。
5、id还一个老特性是锚点功能,当浏览器地址栏有一个#xxx,页面会自动滚动到id=xxx的元素上面。
总的来说:css只用class来写并有专门的class通用和私有模块命名,id具有唯一性且优先级太高只作为js操作dom的挂钩全部不添加样式。


4.F12Console的用法,以及如何Debug程序

一  什么是 Console

Console 是用于显示 JS和 DOM 对象信息的单独窗口。并且向 JS 中注入1个 console 对象,使用该对象 可以输出信息到 Console 窗口中。


二  为什么不直接使用 alert 或自己写的 log
使用 alert 不是一样可以显示信息,调试程序吗?alert 弹出窗口会中断程序, 如果要在循环中显示信息,手点击关闭窗口都累死。而且 alert 显示对象永远显示为[object ]。 自己写的 log 虽然可以显示一些 object 信息,但很多功能支持都没有 console 好。

Console的方法比较多,在这里就不一一介绍了。





返回列表 返回列表
评论

    分享到