// 定时函数(1s中执行一次)
// 1、setTimeout函数(定时任务只执行一次)
var timer = setTimeout(function(){
console.log(123);
},1000);
timer
// 循环中套用定时器
for(var i = 0; i < 10; i++){
timer // 只打印一次
console.log(i);
}
// 清除定时器
clearTimeout(timer)
// 2、setInterval函数(执行多次)
var timer1 = setInterval(function(){
console.log(666)
},1000)
// 设置定时清空setInterval
timer2 = setInterval(function(){
console.log(777)
//clearInterval()里面只能清除一个定时器
clearInterval(timer1) // 清除timer1
clearInterval(timer2) // 清除timer2
},3000)
计时器setTimeout、和setInterval的区别:
1、setTimeout定时任务只执行一次就终止,而setInterval是执行多次且不会主动终止只有清除定时器 (clearInterval)才会终止
2、clearTimeout()clearInterval()都只能清除单个定时器
// 1、process.argv: argv是一个数组,默认情况下,前面两项数据跟别是:Node.js环境路径;当前执行的js文件全路径
// *可以接收命令行参数(第三个参数以后)
console.log(process.argv)
// 2、process.arch打印当前系统的架构(64位或者32位)
console.log(process.arch) // 输出结果为x64(64为操作系统)
模块化开发
传统非模块化开发有如下的缺点
1、命名冲突
2、文件依赖
前端标准的模块化规范(代码加载需要服务端经过网络传发送到浏览器端 一般都是异步的)
1、AMD - requirejs
2、CMD - seajs
服务器端的模块化规范(服务端代码模块只需磁盘加载到内存 一般都是同步的)
1、CommonJS - Node.js
模块化相关的规则
1、如何定义模块:一个js文件就是一个模块,模块内部的成员都是相互独立的
2、模块成员的导出和引入
模块的导出和引入(推荐使用第一种方法)
1、变量的导出引入方式有两种:
1、exports.要导出的变量名 = 变量名 ag: exports.sum =sum
对应的在其他模块引入变量的方法是:
var module = require(’./demo02.js’) 在demo3.js中导入demo02.js这个模块
var ret = module.sum(12,13);
console.log(ret)
2、module.exports = 要导出的变量名 ag: module.exports = sum
对应的模块引入的方法是:
var module = require(’./demo02.js’) 在demo3.js中导入demo02.js这个模块
var ret = module(12,13); // module本身就是一种方法
console.log(ret)
3、使用global(这种方式很少用)
导出
var flag = 123
global.flag = flag
导入
require(‘demo01.js’);
console.log(global.flag)
demo01.js
sum = function(a, b){
return parseInt(a) + parseInt(b)
}
// 在当前模块中导出这个变量
// 导出方式一
// exports.sum = sum
// 导出方式二
module.exports = sum
demo02.js
/*
// 方式一引入sum方法(demo01模块中的代码都会被执行)
var module = require("./demo01全局成员")
var res = module.sum(10, 15)
console.log(res)
*/
// 方式二(demo01模块中的代码都会被执行)
var module = require("./demo01全局成员")
res = module(10, 15)
console.log(res)
注意:
1、已被加载的模块会缓存
2、模板文件的后缀3种情况:.js .json .node
3、上述三种模块加载的优先级(不加文件后缀时):.js >. josn > .node