如何解決跨域問題
- 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]