定义正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中提取出符合某个条件的子串等
组成 正则表达式有普通字符和特殊字符(元字符组成)
普通字符
普通字符由未显示指定为元字符的打印和非打印字符组成,包含所有的大小写字母字符,所有数字标点符号等
所有文件、目录的创建、读取、删除操作都有同步和异步两种方式,同步方式方法名后有 Sync
1 | let fs = require('fs'); |
readFile(path, {encoding:’’,flag:’’}, callback(err, data)):完整读取文件
encoding: utf8, ascii, base64; 默认二进制
flag:
1 | r, 读取文件,不存在则抛出异常 |
fs.writeFile(path, data, [options], callback)
1 | option:{ |
mode:第一位为 0,第二位为文件或目录所有者的权限, 第三个为文件或目录所有者所属用户组的权限, 第四个为其他人权限
数字所对应的权限:
fs.appendFile(fileName, data, [options], callback) // 在文件地步追加写入数据,文件不存在则创建文件
options 中 flag 默认为 a
同步版:appendFileSync()
fs.open(filename, flags, [mode], callback(err, fd)),fd 是文件句柄。同步版:fs.openSync() //106 行
文件句柄用于 read 、 readSync、 write 、writeSync 方法
fs.read(fd, buffer, offset, length, position, callback(err, bytesRead, buffer))
同步读取:readSync()返回实际读取到的字节数
fs.write(fd, buffer, offset, length, position,callback(err, writeen, buffer))
同步版: writeSync();
fs.close(fd, callback)
同步版本:fs.closeSync(fd)
fs.fsync(fd, callback) 同步缓存中的数据到文件
fs.fsyncSync(fd) 同步版本的 fsync
fs.mkdir(path, [mode], callback(err))
fs.readdir(path, callback(err, files))
fs.readdirSync()
fs.stat(path, callback(err, stats)),fs.lstat(path, callback(err, stats))两者基本相同,lstat 不能查看符号链接文件信息
1 | stats对象:{ |
同步版:fs.statSync fs.lstatSync
使用 open 和 openSync 打开的文件使用 fs.fstat(fd,callback)访问信息,同步版为 fs.fstatSync
fs.exists(path, callback(exists)) 回掉函数的参数为布尔值,文件存在则为 true
同步版本:fs.existsSync
fs.realpath(path,[cache],callback(err, resolvedPath))
cache 是预先指定的路径对象:{‘/etc’: ‘/somepath/etc’}
同步版: fs.realpathSync()
fs.utimes(path, atime, mtime, callback(err))
使用 open 打开的文件时间修改使用:fs.futimes(fd, atime, mtime, callback)
fs.chmod(path, mode, callback(err))
fs.fchomd(fd, mode, callback) 使用 open 打开的文件
fs.rename(oldname, newname, callback(err))
_硬链接_:实际上就是文件名,通过特殊操作可以为文件创造多个文件名即多个硬链接
创建硬链接
1 | fs.link(srcpath, dstpath,callback(err)) |
删除硬链接
1 | fs.unlink(path,callback(err)); // 当删除的硬链接是文件的最后一个硬链接时等同于删除文件 |
符号链接亦称软链接,是一种仅包含另一个文件或目录的路径及文件名或目录名的特殊文件
1 | // 创建 |
文件截断是先清楚文件内容,然后修改文件尺寸的操作
1 | fs.truncate(filename, length, callback(err)) |
fs.rmdir(path, callback(err))
1 | fs.watchFile(file,[options],listener(curr, prev)) |
fs.unwatchFile(filname, [listener]),当文件发生更改时取消某个处理函数,没有 listener 表示取消监听
fs.watch(file, [options],listener(event, file));event 为 rename(重命名,移动,删除)或 change(修改);watch 函数返回一个 fs.FSWatcher 对象,使用此对象的 close 方法关闭 watch 监视
js 字符串方法预览:
fromCharCode(num1, num2,,,),
charAt(),
charCodeAt(),
length,
split(‘’),
slice(start, end?)
substring(start, end?)
trim()
concat()
toLowerCase()
toUpperCase()
indexOf(str, index?)
lastIndexOf(str, index?)
search(regexp)
match(regexp)
replace(search, replacement)
单引号和双引号都可以表示字符字面量,’string is this’ “other string is that” 推荐在 js 中使用单引号,HTML 中使用双引号,转义字符以\开始, \n 换行符 \f 换页符号 \b 空格符 \r 回车符 \t 水平制表符号 \v 垂直制表符号
fromCharCode 返回由 utf-16 编码单元组成的字符串,而 charCodeAt 则返回指定位置的字符的 utf-16 码, charAt 返回制定位置的字符
1 | String.fromCharCode(97, 98, 99); // 'abc' |
字符串的 length 属性为字符串的长度, ‘稻草人’.length // 3
split(code, limit)将字符串转换为数组以 code 字符分割,limit 为分隔后显示前几项
slice(start, end?)从字符串中截取子字符串,start 为开始位置,end 为结束位置(不包含)如果没有 end 参数则到字符串结尾
substring 和 slice 函数一样,参数值可以为负值
1 | "test".split(""); //['t','e','s','t'] |
trim 去除字符串两侧的空格,concat 把对字符串进行拼接;
1 | " test ".trim(); //'test' |
toLowerCase 把字符串转换为小写,toUpperCase 将字符串转换为大写字母
indexOf(str, index?) str 为索引的字符,index 为开始的位置默认为 0;
lastIndexOf(str, index?) 和 indexOf 一样,只是从 index 位置开始向前开始查找
1 | "test".indexOf("t"); // 0 |
search(regexp) 返回字符串中第一个与 regexp 相匹配的子字符串的起始位置,为匹配则返回-1;match(regexp) 将 regexp 与字符串匹配,若未设置 全局匹配标志则返回第一次匹配的相关信息,若设置了全局匹配标志则返回所有匹配的子字符串;replace(str or regexp, ‘replacestring’),将字符串中第一个 str 字符替换,或将匹配正则的字符替换,正则表达式中若设置全局标志则把所有匹配的字符全部替换,若未设置则只替换第一个匹配的字符,替换的目标字符中可以使用$符号进行完全匹配或捕获分组
1 | "-yy-xxx-y-".search(/x+/); // 4,不使用正则表达式时和indexOf函数一样 |
概述:语法、变量与赋值、值、布尔值、数字、运算符、字符串、语句、函数、异常捕获、严格模式、变量作用域和闭包、对象和构造函数、数组、正则表达式、Math、标准其他库
概述
var, let, const 用于声明变量(const 声明常量)
1 | var x; // 声明变量 |
语句与表达式
语句是做事情,一个语句用分号结束,语句块没有分号结束;表达式则是产生一个值
1 | var str = ""; // 语句 |
分号
js 中分号可选,会自动判断语句结束位置并插入分号,但,,,,,,不推荐,最好一直带着分号
注释
单行注释: //
多行注释: /* */
标识符:使用 unicode 字符、美元符、下划线开头后跟 unicode 字符、数字、美元符
保留字和 NAN、Infinity、undefined 不能用作变量名
使用 = 赋值, 复合赋值为 += 、 -= 、 /= 、 *=
分类: 布尔值、数字、字符串、undefined、 null、 对象
每一类值都有属性,每个属性都由 key 和 value 组成
原始值有布尔值、数字、字符串、undefined、null
特点:
1 | 3 === 3 |
属于对象的有:简单对象、数组、正则表达式
特点:
undefined 表示没有值,而 null 表示没有对象,未赋值和缺失的参数都为 undefined
typeof 操作结果:
操作数 | 结果 |
---|---|
undefined | undefined |
数字 | number |
字符串 | string |
布尔值 | boolean |
函数 | function |
null | object |
数组 | object |
对象 | object |
instanceof:value instanceof constr
如果 value 是通过 constr 构造器创建的对象则返回 true
布尔值只有 true 和 false 两个值。
产生布尔值的运算符:
===, !==, ==, !=, >, <, >=, <=
解释为 false 的值:
其余都是 true 特别注意: [] 和 {} 都被解析为 true
二元逻辑运算符:
1 | var i = 0; |
1 | true && 1; //1 |
js 中所有数字都是浮点数,也有三个特殊的值:NaN,Infinity,-Infinity;
运算操作: + - * / % ++ –
直接通过字面量来创建,通过方括号来方位字符串里的字符(只读),具有 length 属性。
slice、trim、toUpperCase, indexOf,
1 | if (condition) { |
1 | for ([<<init>>], [<<condition>>], [<<post_iteration>>]) { |
break 跳出循环,而 continue 结束本次循环,开始下一次循环
函数声明:function funName(parameter1, parameter2) {function body}
函数声明会提升,声明后的函数连同实体会被移动到其所在作用域的开始处; 通过 var 定义的变量也会发生提升,但只是定义发生了提升,赋值未提升。调用函数后返回一个值(函数表达式)。
百度统计是什么?以下引用百度百科的解释
百度统计是百度推出的一款免费的专业网站流量分析工具,能够告诉用户访客是如何找到并浏览用户的网站,在网站上做了些什么,有了这些信息,可以帮助用户改善访客在用户的网站上的使用体验,不断提升网站的投资回报率。
百度统计提供了几十种图形化报告,全程跟踪访客的行为路径。同时,百度统计集成百度推广数据,帮助用户及时了解百度推广效果并优化推广方案。