第三章 基础知识
变量不存在时打印会出现undefined
抛出错误:
javascript
if (typeof variable == "undefined") {
throw new Error("content")
}
instanceof(判断prototype):当判断object对象时使用
js
console.log(variable instanceof Array/Object)
字符串简写&字符串自变量
js
let text_document = "\"内容1\"\"内容2\"\"内容3\"";
console.log(text_document);
转换符
\xxx
在html里中,\t只能显示一个,若显示多个空格,使用:
javascript
" "
字面量
javascript
let obj = [
{title:"RGB"},
{title : "GRC"},
{title : "CMD"}
];
function show() {
return `
<ul>${obj.map(item => "<li>"+ item.title +"</li>").join("")}</ul>
`
}
document.body.innerHTML = show()
基本形式:
javascript
${}
可以添加基本上所有的表达式。
字面量里可以套字面量
★字符串
javascript
toUpperCase() 大写模式
toLowerCase() 小写模式
去除空白: trim()
取编号:charAt(num)
截取 .slice(num)
.substring(num)
.substr(num) 用这个. 第二个参数选择截取数量
num指从哪里截取
检索:indexOf("str") 返回数字
lastIndexOf("str") 从后向前查找
includes("str") 返回布尔类型
starsWith("str") 是否以str为开始
endsWith("str")
替换: replace(替换对象,替换内容)
重复: repeat(num)
转换: ①隐式转换 参与其它数的运算 转数字: *1 转str:+"“
②直接转换
parseInt/String/toString()
parseint只能转换以数字开头并且添加其它类型的数据
string只能字符串数字转换成数字
string无小数位数
toString()是方法
连接:(array) .join("") 以“”形式进行连接
返回原型: valueOf()
连接数组:join()
通过 new方法建立的variable都是object类型
标准: 声明对象 ==》 调用(类/构造函数)方法
★布尔
object在boolean中是true(【】和{}转换过来都是真)
boolean对象中转换为数值类型时,true为1 false为0.
判断中会转换为数值类型,而表达式中不会转换
字符串中的数字转换为数值,就是数值...
空数组转换为数值也是0
逻辑:(xxx == ooo) ==> (xxx=>数值 000==>数值, x数值与0数值比较)
比较和转换是两件事。
javascript
数值类型: 0为假 !0为真
字符串类型: 空字符串为假 !空字符串为真
引用类型: []和{}为真
boolean转换:
1:Boolean()
2:variable = !!variable;
javascript
let number = 0;
number = !number ==>干了两件事: 1 number转换为boolean类 型,
2 将其取反
console里输出为:true
而大多数时候我们只是将其转换为boolean,所以:
number = !!number
console里输出为:false
用.语法调方法时会先转换为对象再调用,也就是说非引用类型是不能直接调用方法的。
javascript
判断是否为整数: Number.isInteger(num) 【构造函数的静态方法
四舍五入:toFixed(num_s) num_s表示小数留多少位 (0时即取整)
其它
NAN不可与NAN比较
javascript
判断是否为NAN:Number.isNaN(num);
Object.is(num,type) type为检验的类型
表单类型设置为只能输入数字,可以减少后续转换数据的麻烦。
数字转换:
javascript
parse系列转换
JS是很开放的语言
★Math库
javascript
取最大:Math.max()
取整: ~.ceil() 向上取整
~.floor()向下取整
舍入:~.round()
随机:~.random() 0-1间的数 向下取整取到的是(a,b-1)
不能转换数组,所以需要转换。简单的转换通过展开语法:
let arr = [1,5,48,79,5,13,2,1];
console.log(Math.max(...arr));
或者通过apply方法:
console.log(Math.max.apply(Math,arr))
javascript
取区间的时候,比如我要取
let students = ["第一", "第二", "第三", "第四", "第五"];
中的第三到第五,那么换成索引,区间为:
(2,4)
转换算法:(2,4+1) ==> [2,5]
let index = min + Math.floor(Math.random() * (students.length - 2));
console.log(studens[index]);
随机获取:
javascript
function ran_get(array, start = 1, end) {
// start--;
// end = end || array.length;
// const index = start + Math.floor(Math.random() * (end - start));
// return array[index];
// }
★时间戳
1 使用new date() 方法创建objcet(而不是date()创建字符串),让其*1:
2 number(date)
3 date.valueof
4 date.getTime
javascript
let time = new Date(); ==>对象
let time = Date(); ==>字符串
time * 1 ==>返回时间戳(只能是new Date()创建)
时间戳是1970年到现在经历的毫秒数
通过字符串:
javascript
const time = new Date("1990-9-22 3:22:22")
const time = new Date(1990,2,22,13,22,19)
const param = [1990,2,22,13,22,19]
const time = new Date(...param)
时间戳转换为ISO日期:
javascript
直接把时间戳扔到Date里:
let time = new Date(timestamp)
日期获取:
javascript
function timeFormat(date,format="YYYY-MM-DD HH:mm:ss") {
const config = {
YYYY:date.getFullYear(),
MM:date.getMonth() + 1,
DD:date.getDate(),
HH:date.getHours(),
mm:date.getMinutes(),
ss:date.getSeconds()
}
for (const key in config) {
format = format.replace(key,config[key]);
}
return format;
}