回顾总结1
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回顾总结1相关的知识,希望对你有一定的参考价值。
笔试题
一、Seajs和requirejs的区别:requirejs是执行的AMD规范,因此所有的依赖模块化都是先执行(也就是预执行),依赖前置。(requirejs从2.0之后的版本支持CMD的写法)
seajs是执行的CMD规范,因此所有的依赖模块化都是懒执行(也就是延迟执行),依赖就近。
二、为什么要模块化:嵌入网页的js越来越庞大且复杂,在开发过程中通常需要团队的分工协作,开发者不得不用软件工程的方法管理网页的业务逻辑(处理数据的逻辑)。插拔式,方便直接调用别人或自己写好的模块.
三、seajs和requirejs分别怎么暴露要用的接口:seajs是通过module.exports来暴露需要的东西。 requirejs是通过return来暴露需要的东西。
- 闭包:在方法里再定义一个函数,和变量。执行时因为不会释放内存就会生成闭包。方法的调用时候,先在函数里找要调用的方法和变量,如果没有才会沿着作用域链找。闭包不能释放,占用内存。
- 变量提升:JS在执行一个函数的时候会先生成一个EC,EC中包含AO,所以它会先生成好所有的变量,但是没有赋值,只是扫描了一遍代码。 然后在执行代码。这就变量的提升。
- Js是单线程: 分为队列事件栈。只有执行完栈的代码,才会执行队列事件的代码。而且栈是先进后出,队列事件是先进先出。循环执行的。Setimeout 这种是属于队列事件的。
- setimeout: 这是window对象调用的。 注意this的区别。
- 数组的排序:冒泡算法,或者用 arr.sort()和arr.reverse()。
- i的最后取值:i的值是最后的值。循环是一下就执行完了的,所以i值已经发生了变化。只能是最后的值。且注意i值的边界。以为i最后是i++加到了的,所以大于循环的条件。
机试题:
/*第一题*/
应用:计算阶乘
知识点:for循环
var res = 1;
for(var i = 1;i <= 9; i += 2){
res *= i;
}
console.info("res = " + res);
/*第二题*/
应用:计算奇数和偶数和
知识点:for循环,if else判断
var odd = 0, even = 0;
for(var i = 0;i <= 100; ++i){
if(i % 2)
even += i;
else
odd += i;
}
console.info("odd = " + odd + ", even = " + even);
/*第三题*/
应用:计算
知识点:for循环 if的判断
var count = 0;
for(var i = 1; i <= 4; ++i){
for(var j = 1;j <= 4; ++j){
if(i != j){
for(var k = 1; k <= 4; ++k){
if(i != k && j != k){
++ count;
console.info(""+i + j + k);
}
}
}
}
}
console.info("count = " + count);
/*第四题*/
应用:计算质数的和
知识点:for循环 if 判断 和循环的跳出
count = 0;
for(var i = 101 ; i < 200; ++i){
for(j = 2,len = parseInt(Math.sqrt(i) + 1); j <= len; ++j){
if(i % j == 0){
console.info("i = " + i + ", j = " + j);
++ count;
break;
}
}
}
console.info("count = " + count);
以上是关于回顾总结1的主要内容,如果未能解决你的问题,请参考以下文章