前端基础知识(Day 1)

如何解决跨域问题

  • jsonp
<script>
var script = document.createElement('script')
script.type = 'text/javascript'

script.src = 'http://www.smileyqp.com/login?username=smileyqp&callback=jsonCallback'
document.head.appenChild(script)

function jsonCallback(res){
  console.log(JSON.stringify(res))
}

</script>

$.jquery(
	url:'http://www.smileyqp.com/login?username=smileyqp',
	type:'text/javascript',
	dataType:'jsonp',
	jsonCallback:'jsonCallback',
	data:{}
)
  • nginx反向代理
  • node代理转发
  • 跨域资源共享cors

什么是闭包

闭包是可以读取其他函数内部变量的函数。js中变量的作用域是隶属于函数的作用域的,当函数执行完成之后,变量也会随之被销毁。但是由于闭包是在函数内部的函数,它可以读取其上层函数的变量,因此即使上层函数执行完成之后,其变量也不会被销毁。

  • 由于变量是存在内存之中的,如果滥用闭包的话会导致内存消耗过大,浏览器性能降低,因此需要在变量使用王成之后将其销毁
  • 经典的for取值问题
for(var i = 0; i < 10 ;i++){
	callback(()=>{
		console.log(i)	//10个10
	},1000)
}

for(var i = 0; i < 10; i++){
	((j) => {
		callback(()=>{
			console.log(j)
		},1000)
	})(j)
}
function addCounter(){
  let count = 0;
  function counter(){
    count = count +1;
  }
  return counter;
}

const increaseCount = addCounter();

const a1 = increaseCount();	//1
const a2 = increaseCount();	//2
const a3 = increaseCount();	//3

[‘1’,‘2’,‘3’].map(parseInt)的结果是什么?Why?

  • map函数传入的三个参数依次是,item,index和数组本身
  • map结果最终返回值是每次的返回值合并成的一个数组
  • parseInt的传入的两个参数依次是string和一个进制数;第二个参数不传的时候默认为10 进制,但是如果哦前面的string以0x或者0开头的话,默认为16进制或者8进制
['1','2','3'].map(parseInt)

相当于

[parseInt('1',0),parseInt('2',1),parseInt('3',2)]

于是结果为

[1,NaN,NaN]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章