如何解决跨域问题
- 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]