赞
踩
1.Script标签特殊属性:
①async:表示应立即开始下载脚本,但不能阻止其他页面动作,如下载资源或等待其他脚本加载。只对外部脚本文件有效;
②defer:表示脚本可延迟到文档完全被解析和显示之后再执行。只对外部脚本有效。
注:script放在head星,会导致页面渲染有明显延迟,由于页面在浏览器解析到<body>的起始标签时开始渲染。
2.文档模式:
①混杂模式:以省略文档开头的doctype声明作为开关;(向后兼容)
②标准模式:加了<!DOCTYPE html>;
主要区别只体现在通过CSS渲染的内容方面。
3.元素:针对早期浏览器不支持js的问题;一个页面优雅降级的方案。
使因场景:
①浏览器不支持脚本;
②测览器对脚本的支持被关闭。
注:如果浏览器支持并启用脚本,则该元素中内容都不会被渲染。
1.标识符:是变量、函数、属性或函数参数的名称。可由一个或多个下列字符组成:
①首字符必须是一个字母、下划线(一)或美元符号($);
②剩下的其他字符可以是字母、下划线、美元符号或数字。
2.var:①存在变量提升;
②函数作用域。③能同名;
④可以;
let ①x;②块作用域;③不能同名;④在铜声明
变量不会挂在window上,
const ①x;②块作用域;③不能同名;④不可以;
⑤写let不同点:声明变量时需初始化,且不能更改。不能用
来声明选代变量。
是否存在变量提升 | 作用域 | 能否重复命名 | 在全局声明的变量会不会被挂到window上 | |
---|---|---|---|---|
var | 是 | 函数作用域 | 能 | 会 |
let | 否 | 块作用域 | 不能 | 不会 |
const | 否 | 块作用域 | 不能 | 不会 |
注:let和const不同,const 声明变量需初始化,且不能修改,不能用来声明迭代变量。
3.数据类型:
①基本(6个):Undefined,Null,Number,string,Boolean,Symbol(es6 符号)
②复杂:Object。
注:
① | ② | |
---|---|---|
console.log(xxx) | “undefined” | 报错 |
console.log(typeof(xxx) | “undefined” | “undefined” |
4.NaN: 不是数值(Not a Number),用来表示本来要返回的数值失败了。
NaN不写任何包含本身在内的任何值相等。NaN == NaN 错误
5.数据转换:
将非数值→数值,规则:
①Number():
注:Null,undefined 没有tostring)方法。
String() 始终会返回表示相应类型值的字符串。
null,undefined -> “xxx”
6.操作符
let a =3 ;
a ** = 2; // 9
null == undefined; // true
NaN == NaN; // false
null == 0; // false
undefined == 0; // false
7.for… in 和 for …of的区别
1.instanceof
var obj = new Object();
console.log(obj instanceof Object); // true
function Foo(){}
var f1 = new function();
f1.__proto__ == Foo.prototype.
Foo.prototype.constructor = Foo
2.执行上下文
3.垃圾回收
let max = Math.max(1,2,3,4); // 4
let str = new String('aaa');
let str2 = str.substring(2);
str = null
(2) 引用类型和原始值包装类型的主要区别是对象的生命周期
let a1 = 'aadad';
a1.color = 'red';
console.log(a1.color); // undefined
let person = new Object();
person.name = 'Job';
let person = {
name = 'Job';
}
let person = new Object();
person.name = 'Job';
person['age'] = 18;
① Array.from(类数组对象,可选的映射函数参数):
console.log(Array.from('Matt')); // ['M', 'a', 't', 't']
const a1 = [1, 2, 3];
const a2 = Array.from( a1, x => x**2 ); // [1, 4, 9]
② Array.of() 可以把一组参数转换为数组;
console.log(1,2,3); // [1, 2, 3]
console.log(undefined); // [undefined]
3) 数组空位
1)使用数组字面量初始化数组时,可以使用一串逗号来创建空位(hole);
const options = [ 1, , , , 5]; // 遍历 1 undefined undefined undefined 5
2)注意:由于行为不一致和存在性能隐患,因此实践中要避免使用数组空位。如果确实要需要空位,则可以显式地用 undefined 值代替。
4) length:非只读,修改length的值,可以从数组末尾删除或添加元素
let arr = [1, 2, 3];
arr.length = 4;
console.log(arr[3]); // undefined
5)检测数组:Array.isArray(xx);
6)方法:
- 填充:fill(要填充的数字,开始索引,结束索引) 。 ----> es6
var zero = [0, 0, 0];
zero.fill(2); // [2,2,2],没索引全部填充
zero.fill(0); // 重置
zero.fill(1, 1); // [0, 1, 1]
let arr = [1,2];
let arr1 = arr.concat(3, [4]);
// arr1 [1, 2, 3, 4]
let arr = [1, 2, 3, 4]
arr.slice(1); // [2, 3, 4]
arr.slice(1, 2); // [2, 3]
注:如果参数有负值,就用数组的长度加上这个 负值即可。
eg:5个元素,slice(-2, -1) —> slice(3, 4) [0, 1, 2, 3, 4]
const people = [
{ name: 'Matt', age: 27 },
{ name: 'Job', age: 29 },
]
alert( people.find(element, index, arr) =>{
element.age < 28; // { name: 'Matt', age: 27 }
} ))
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。