push方法用于将一个或多个元素添加或附加到数组的末尾。使用这种方法,可以通过传递多个参数来附加多个元素。
let arr = [1, 2, 3, 4, 5]
arr.push(6)
console.log(arr) // [1, 2, 3, 4, 5, 6]
Unshift方法就像在数组开头工作的push方法。该方法用于将一个或多个元素添加到数组的开头。
let arr = [1, 2, 3, 4, 5]
arr.unshift(-1)
console.log(arr) // [-1, 1, 2, 3, 4, 5]
let obj = {}
// 方式一
obj.name = 'web_chicken'
console.log(obj) // name: "web_chicken"
// 方式二
obj["name"] = 'web_chicken'
console.log(obj) // name: "web_chicken"
在载入页面的所有信息之前,不运行onload函数。这导致在执行任何代码之前会出现延迟。
onDocumentReady在加载DOM之后加载代码。这允许早期的代码操纵。
JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里。
例如下面的例子:
var foo = function(){
var name = "exe";
return function inner(){
console.log( name );
}
}
var bar = foo();//这里得到的是函数inner的引用,而不是那一坨代码
bar();//这里开始执行inner函数,回头看看上面加粗的那句话
闭包就是跨作用域访问变量 —— 内部作用域可以保持对外部作用域中变量的引用从而使得(更)外部作用域可以访问内部作用域中的变量。
什么是闭包?
简单来说,闭包是指可以访问另一个函数作用域变量的函数,一般是定义在外层函数中的内层函数。
为什么需要闭包?
局部变量无法共享和长久的保存,而全局变量可能造成变量污染,所以我们希望有一种机制既可以长久的保存变量又不会造成全局污染。
特点
何时使用?
变量既想反复使用,又想避免全局污染
如何使用?
可以以给定的方式将值附加到数组:
let arr = ['1', '2']
arr[arr.length] = 'add'
console.log(arr) // ["1", "2", "add"]
for-in循环用于循环对象的属性。
for-in循环的语法是:
let obj = [
{ id: 1, title: '第一条数据' },
{ id: 2, title: '第二条数据' },
{ id: 3, title: '第三条数据' }
]
for (id in obj) {
console.log(obj[id]) // {id: 1, title: "第一条数据"}
}
在每次循环中,来自对象的一个属性与变量名相关联,循环继续,直到对象的所有属性都被耗尽。
9.描述JavaScript中的匿名函数
被声明为没有任何命名标识符的函数被称为匿名函数。一般来说,匿名函数在声明后无法访问。
匿名函数声明:
var f1 = function () {
console.log('fl')
}
f1() // 不调用不执行
函数call()和applay()在使用上非常相似 ,只是有一点区别
JavaScript允许DOM元素嵌套在一起。
在这种情况下,如果单击子级的处理程序,父级的处理程序也将执行同样的工作。
<div class="box">
<div class="little"></div>
</div>
<script>
document.querySelector('.little').addEventListener('click', () => {
alert('单击')
})
document.querySelector('.box').addEventListener('click', () => {
console.log('冒泡了')
})
</script>
我们发现 当我们点击小盒子的时候 控制台会输出‘冒泡了’ 这就是一个简单的冒泡案例
let a = 10
let b = 20
console.log(a !== b) // true
let c = true
let d = false
console.log(d || c) // true
let e = true
let f = false
console.log(e && f) // false
事件是由用户生成活动(例如单击链接或填写表单)导致的操作。需要一个事件处理程序来管理所有这些事件的正确执行。事件处理程序是对象的额外属性。此属性包括事件的名称以及事件发生时采取的操作。
默认情况下,在页面加载期间,HTML代码的解析将暂停,直到脚本停止执行。这意味着,如果服务器速度较慢或者脚本特别沉重,则会导致网页延迟。在使用Deferred时,脚本会延迟执行直到HTML解析器运行。这减少了网页加载时间,并且它们的显示速度更快。
JavaScript中的不同功能组件是:
该方法在数组启动时起作用,与push()不同。 它将所需数量的元素添加到数组的顶部。
let arr = [2, 3, 4, 5, 6]
arr.unshift(1)
console.log(arr) // [1, 2, 3, 4, 5, 6]
innerHTML内容每次刷新,因此很慢。
在innerHTML中没有验证的余地,因此,更容易在文档中插入错误代码,从而使网页不稳定。
<a href="javascript:void(0)">跳转</a>
<a href="javascript:;">跳转</a>