1.数组从小到大排序有哪些方法?
利用数组Aarr.sort()排序
var arr = [45,3,12,4,8,25];
function compare(a,b){
return a-b;
}
arr.sort(compare);
====================================================================================
for遍历数组对比
var arr = [45,3,12,4,8,25];
var min;
for(var i=0;i<arr.length;i++){
for(var j=i;j<arr.length;j++){
if(arr[i]>arr[j]){
min=arr[j];
arr[j]=arr[i];
arr[i]=min;
}
}
}
console.table(arr);
2.一个关于闭包的题目
var name = 'Hello';
(function(){
if(name==undefined){
var name = 'Jack';
console.log('you are'+' '+name)
}else{
console.log(name+'world');
}
})()
这段代码最终输出是 you are Jack
在这我们聊聊闭包问题吧
闭包的概念:
我的理解是,闭包就是能够读取其他函数内部变量的函数。
优点:
1.保护函数内的变量安全,加强了封装性
2.在内存中维持一个变量(用的太多就变成了缺点,占内存)
缺点:
闭包有一个非常严重的问题,那就是内存浪费问题,这个内存浪费不仅仅因为它常驻内存,更重要的是,对闭包的使用不当会造成无效内存的产生。
console.log("100"+2-"1") // number 1001
typeof (1+"5"); // string 15
typeof (1-"5"); //number -4
typeof (NaN);// number
typeof null; // object
typeof underfined // undefined
这里要记住的是 “+” 有字符串存在就是连接字符串了
=====================================================
var a = '数据1';
var obj = {
a:'数据2',
pro:{
a:'数据3',
getName:function(){
return this.a;
}
}
}
console.log(obj.pro.getName());//数据3
var test = obj.pro.getName;
console.log(test());// 数据1
===========================================================
考察作用域
function fn(){
var arrFn = new Array();
for(var i=0;i<5;i++){
arrFn[i] = function(){
return i;
}
}
return arrFn;
}
var box = fn();
for(var j=0;j<box.length;j++){
console.log(box[j]());// 5 5 5 5 5
}