关于Javascript面试题总结

关于get和post的区别

  • get和post的区别都是http协议周边的两种请求方式,get一般用于获取数据,post一般用于传输数据
  • get比post更不安全,get的参数是直接暴露在URL之上,所以参数是可以看见的,所以不会用来传输敏感数据,当然相对于post来说get传输的数据比post的速度是要更快的
  • get最大的传输的数据大小是有限制的(8KB)而post是没有限制的(流传输/切片)
  • get在浏览器回退时是无害的(不会再去向服务器发请求),而post则会发请求(返回上一页面时)常见于网络断开后返回上一页能正常显示而post不能
  • get发送请求时只能进行url编码(urlencode)而post拥有多种编码方式(请求头)

var/let和const的区别

var 和let,const分别是ES5和ES6出现的
const声明的常量必须声明

  • 一旦声明就必须赋值、
  • 声明之后不能再去修改
  • 如果声明的时复合类型的数据,可以修改其属性,但是如果声明的是对象则可以修改其中的属性(不会报错)不会报错的原因:其中就涉及到堆内存的栈内存,即改变obj属性时改变的时obj对应对象的堆内存的值(改变的不是堆内存的地址而是改变的堆内存地址中对应数据的值)

let和var声明的是变量,声明之后就可以更改,声明时可以不赋值(const必须赋值)
var 允许重复声明,但是后面赋值的会去覆盖掉前面赋值的,let和const在同意作用域不允许重复声明,否则会报错
var声明的变量存在声明提升(脚本运行时会把变量提升到作用域的顶部))即变量的声明提升(上面的那条)

var不存在块级作用域而let和const存在块级作用域的概念
let和const即时在全局下声明的也不是全局作用域里面的值

关于ES5和ES6的作用域

  • ES5:全局作用域,跨级作用域由{}包括,if语句和for循环中的{}
  • ES6:ES6 中新增了会计作用域,块级作用域由{}包裹,if和for语句中的{}也属于块级作用域

HTTP的请求状态码(常见的)

  • 200:请求成功
  • 301:请求资源如网页等 被永久转移到其他的URL
  • 302:资源同上但是只是零食转移到其他的URL
  • 304:未修改,所请求的修改的未修改,服务器返回此状态码时,不会返回任何资源,客户端通常会缓存访问过的资源
  • 404:请求的资源如网页不存在
  • 502:服务端出错了,一般出现这个错误就是后端的问题了,没你的事

编写获取斐波那契数列的任意一项的函数

  • 第一项和第二项的值时1,存第三位开始每一项的值是前两项之和
//  递归求斐波那契数列
// 要求h传入的值为我需要的第几项的值
function fib(h) {
    
    
	// 如果传入值为1或者为2就返回1
	if (h == 1 || h == 2) {
    
    
		// console.log(111);
		return 1;
	}
	// 递归:函数自己调用自己
	// 任意一项的值时前两项相加的和
	return fib(h - 1) + fib(h - 2);
}
fib(5);

定时器的不同作用域的执行顺序

全局作用域下的定时器

如下题目

for (var i = 0; i < 3; i++) {
    
    
	setTimeout(() => {
    
    
		console.log(i);
	}, 0);
	console.log(i);
}

我们可以看到其中有定时器也有循环,但是一般的定时器我们还可以理解,但是碰到这种执行定时为0的时候我们有的小伙伴就懵了,这个我们该怎么去执行呢?
答:其实和常规执行一样
我们可以把他拆分一下

var i = 0;
setTimeout(() => {
    
    
	console.log(i);
}, 0);
console.log(i);
i++;
setTimeout(() => {
    
    
	console.log(i);
}, 0);
console.log(i);
i++;
setTimeout(() => {
    
    
	console.log(i);
}, 0);
console.log(i);
i++;

其实这下就显而易见了
在这里插入图片描述

块级作用域下的定时器

接下来我们就将其升级一下,我们把var声明改为let声明那结果又会如何呢?

for (let i = 0; i < 3; i++) {
    
    
	setTimeout(() => {
    
    
		console.log(i);
	}, 0);
	console.log(i);
}

简单理解块级作用域执行逻辑就是
在这里插入图片描述
当每次循环的时候就会产生一个块级作用域然后在块级作用域下又有打印和定时器,在执行顺序下就会先执行主程序,然后再去执行定时器,因为块级作用域,所有定时器通过作用域链就找到了上面的声明所以执行顺序为
在这里插入图片描述

git常用命令

这里只讲基本格式,写的太详细了这好嘛?这不好(主要是懒)

本地的仓库

  • 初始化仓库
	git init
  • 暂存
	git add 文件名
	// 或者
	git add
  • 暂存版本
 git commit -m '版本描述'
  • 分支
 git branch
  • 合并
 git merge

远程仓库

  • 克隆
 git clone
  • 更新
 git pull
  • 上传(推代码)
 git branch

猜你喜欢

转载自blog.csdn.net/weixin_50112395/article/details/127351702
今日推荐