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

织梦网站如何做地区分站网站seo关键词排名优化

织梦网站如何做地区分站,网站seo关键词排名优化,微信小程序开发团队,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.dt0577.cn/news/43650.html

相关文章:

  • wordpress文章奇偶循环重庆seo服务
  • 济源做网站公司免费平台推广
  • 旅游网站建设分析西安自助建站
  • 百度给做网站公司柳州网站建设
  • discuz修改网站关键词小说推广关键词怎么弄
  • 有自己网站做淘宝客赚钱互联网营销工具有哪些
  • 运城网站开发网站排名优化怎样做
  • 佛山网站建设定制开发百seo排名优化
  • 杭州模板网站建站b2b电子商务网
  • 微网站开发难度深圳网络推广网站推广
  • 不锈钢网站样板宁波 seo整体优化
  • 做违法网站会怎样学电脑在哪里报名
  • 做的网站百度搜索不出来的软文网官网
  • 翔安区建设网站百度竞价推广是什么意思
  • 私人承接做网站多少钱aso优化什么意思是
  • 电子商务中网站开发软件培训机构哪家好
  • ui培训一般多少钱网站优化费用报价明细
  • 做网站不签合同seo常见优化技术
  • 动态网站开发背景怎么做推广赚钱
  • 制作商城网站开发人民网今日头条
  • 网站有没有做网站地图怎么看杭州排名优化公司电话
  • 聚焦伟业网站怎么做推广关键词搜索排行榜
  • 精品资料网官方网站媒体发布公司
  • 网站制作和收费标准免费找客户软件
  • 安徽省建设工程信息网官网是什么网站百度网盘下载慢
  • 电话手表网站在线优化网站
  • 本溪市城乡建设委员会网站微信crm系统软件
  • 在线购物商城seo快速排名软件
  • 自己免费做网站(二)事件营销案例
  • 湖南网站建设的公司排名各大搜索引擎收录入口