当前位置: 首页 > news >正文

wordpress主题ajax放心网站推广优化咨询

wordpress主题ajax,放心网站推广优化咨询,wordpress 安装主题 无法调用图片和颜色,最容易被收录的网站1.请简述var, let, const的区别? (1)块级作用域:块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题: 内层变量可能覆盖外层变量 用来计数的…

1.请简述var, let, const的区别?

(1)块级作用域:块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题:

  • 内层变量可能覆盖外层变量

  • 用来计数的循环变量泄露为全局变量

(2)变量提升:var存在变量提升,let和const不存在变量提升,即变量只能在声明之后使用,否则会报错。

(3)给全局添加属性:浏览器的全局对象是window,Node的全局对象是global。var声明的变量为全局变量,并且会将该变量添加为全局对象的属性,但是let和const不会。

(4)重复声明:var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的变量。const和let不允许重复声明变量。

(5)暂时性死区:在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区。

(6)初始值设置:在变量声明时,var 和 let 可以不用设置初始值。而const声明变量必须设置初始值。

(7)指针指向:let和const都是ES6新增的用于创建变量的语法。 let创建的变量是可以更改指针指向(可以重新赋值)。但const声明的变量是不允许改变指针的指向。

2.解释垃圾回收机制,垃圾回收的方式?

(1)垃圾回收的概念

垃圾回收:JavaScript代码运行时,需要分配内存空间来储存变量和值。当变量不在参与运行时,就需要系统收回被占用的内存空间,这就是垃圾回收。

回收机制

  • Javascript 具有自动垃圾回收机制,会定期对那些不再使用的变量、对象所占用的内存进行释放,原理就是找到不再使用的变量,然后释放掉其占用的内存。

  • JavaScript中存在两种变量:局部变量和全局变量。全局变量的生命周期会持续要页面卸载;而局部变量声明在函数中,它的生命周期从函数执行开始,直到函数执行结束,在这个过程中,局部变量会在堆或栈中存储它们的值,当函数执行结束后,这些局部变量不再被使用,它们所占有的空间就会被释放。

  • 不过,当局部变量被外部函数使用时,其中一种情况就是闭包,在函数执行结束后,函数外部的变量依然指向函数内部的局部变量,此时局部变量依然在被使用,所以不会回收。

(2)垃圾回收的方式

浏览器通常使用的垃圾回收方法有两种:标记清除,引用计数(v8前),标记整理。

3.以下代码的输出是什么

var tmp = new Date();
​
function fn(){console.log(tmp);if(false){var tmp = 'hello world';}
}
​
fn();   // undefine

4.this的指向

var name = "window";
var person = {name: "person",sayName: function () {console.log(this.name);},hello: () => console.log(this.name)
};
function sayName() {var sss = person.sayName;sss(); person.sayName(); (person.sayName)(); (b = person.sayName)();person.hello()
}
sayName(); 
// window
// person
// person
// window
// window

5. 实现数组的扁平化

(1)递归实现

普通的递归思路很容易理解,就是通过循环递归的方式,一项一项地去遍历,如果每一项还是一个数组,那么就继续往下遍历,利用递归程序的方法,来实现数组的每一项的连接:

let arr = [1, [2, [3, 4, 5]]];
function flatten(arr) {let result = [];
​for(let i = 0; i < arr.length; i++) {if(Array.isArray(arr[i])) {result = result.concat(flatten(arr[i]));} else {result.push(arr[i]);}}return result;
}
flatten(arr);  //  [1, 2, 3, 4,5]

(2)reduce 函数迭代

从上面普通的递归函数中可以看出,其实就是对数组的每一项进行处理,那么其实也可以用reduce 来实现数组的拼接,从而简化第一种方法的代码,改造后的代码如下所示:

let arr = [1, [2, [3, 4]]];
function flatten(arr) {return arr.reduce(function(prev, next){return prev.concat(Array.isArray(next) ? flatten(next) : next)}, [])
}
console.log(flatten(arr));//  [1, 2, 3, 4,5]

(5)ES6 中的 flat

我们还可以直接调用 ES6 中的 flat 方法来实现数组扁平化。flat 方法的语法:arr.flat([depth])

其中 depth 是 flat 的参数,depth 是可以传递数组的展开深度(默认不填、数值是 1),即展开一层数组。如果层数不确定,参数可以传进 Infinity,代表不论多少层都要展开:

let arr = [1, [2, [3, 4]]];
function flatten(arr) {return arr.flat(Infinity);
}
console.log(flatten(arr)); //  [1, 2, 3, 4,5]

6. 实现数组去重

给定某无序数组,要求去除数组中的重复数字并且返回新的无重复数组。

ES6方法(使用数据结构集合):

const array = [1, 2, 3, 5, 1, 5, 9, 1, 2, 8];
​
Array.from(new Set(array)); // [1, 2, 3, 5, 9, 8]

7.JS中的基本类型

Number、Object、BigInt、Symbol、String、Boolean、Undefined、Null

  • 栈:原始数据类型(Undefined、Null、Boolean、Number、String)

  • 堆:引用数据类型(对象、数组和函数)

Symbol、Bigint(ES6)新增

8.JS的事件流

事件流有三个阶段:

  • 捕获阶段(Capturing Phase):从最外层的祖先元素开始,逐级往下,直到事件触发元素(目标元 素)所在的元素。

  • 目标阶段(Target Phase):事件到达目标元素。

  • 冒泡阶段(Bubbling Phase):从目标元素开始往上冒泡,逐级往上,直到最外层的祖先元素。

js中只可以执行捕获或冒泡阶段。

http://www.zhongyajixie.com/news/50730.html

相关文章:

  • 兰州需要做推广的公司seo技术推广
  • 商丘企业网站建设公司百度seo快排软件
  • 新手做啥网站好seo排名工具给您好的建议
  • wordpress安装后做什么shopify seo
  • 北京朝阳区疫情最新情况seo教程视频论坛
  • 用mac做网站上海网站关键词排名
  • 微信商城分销系统方案seo优化网站优化
  • 网站首页设计欣赏软件外包公司排行
  • 企业网站建设定制北京疫情又严重了
  • 个人网站怎么做 简历sem是什么公司
  • wordpress淘宝客 采集器推广优化厂商联系方式
  • 网站备案依据四川企业seo推广
  • 摄影师常用的网站seo实战
  • 宁波营销型网站建设关键词排名优化易下拉软件
  • 国外可以做网站盈利模式有哪些百度app
  • 什么是营销型网站酒店线上推广方案有哪些
  • 宝山手机网站制作公司重庆网站制作公司哪家好
  • 品牌建设 示范引领如何seo推广
  • 亚马逊营业执照怎么办理百度seo排名工具
  • 江油网站制作营销策略都有哪些
  • 网站上可以做收藏按钮吗优化步骤
  • 免费做微信链接的网站seo提供服务
  • 免费电商网站模板百度游戏风云榜
  • 制作一个网站一般先要明确外链相册
  • 可以做ps的网站优质友情链接
  • 做资源网站百度关键字排名软件
  • 哈尔滨建设局网站优化外包价格
  • 做网站赚钱嘛软文代写网
  • 做算命网站挣钱吗微博营销策略
  • 做网站和淘宝美工 最低电脑郑州seo顾问外包