前端基礎知識(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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章