Web 前端开发 让前端飞

JavaScript常用方法小总结

2018-04-03  本文已影响0人  张chuner

JavaScript可以说是前端的基础了,对后面框架的学习和深入发展都是很关键的,需要打好基础。

1、使用js实现toFixed函数,设置参数来决定保留几位小数

function formatFloat(src, pos)
{
    return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);
}

2、闭包和作用域

(1)、

(function() {
    var val = 1;
    var json = {
        val: 10,
        dbl: function() {
            val *= 2;
        }
    };
    json.dbl();//这里调用的是val=1,如果这里是this.val则指向json内部
    alert(json.val + val);//10+2=12;
}());
//弹出12

(2)、

window.val = 1;
var json = {
    val: 10,
    dbl: function() {
        this.val *= 2;
    }
};
json.dbl();//通过json调用dbl方法,把json里面的val改为20
var dbl = json.dbl;//把dbl函数赋值给dbl
dbl();//全局作用域,调用dbl()函数,把window的val改为2
json.dbl.call(window);//同上,window的val改为4
alert(window.val + json.val);//4+20=24
//弹出24

(3)、

var a=6;
setTimeout(function(){

    console.log(a);
    a=666;

},1000)
a=66;
//弹出66 66(相隔1S)

(4)、

var foo = 'Hello';
(function() {
    var bar = 'World';
    alert(foo + bar);//HelloWorld
})();
alert(foo + bar);//报错,因为bar未定义

(5)、

foo.x的值是什么?
var foo={n:1};
var bar=foo;
foo.x=foo={n:2};//undefined

(6)、

var test=(function(i){
  return function(){
    alert(i*2);
  }
 }(2));
 test(5);//结果为4(只输出一个4)

(7)、

var a=1,b=2;
 (function(p){
    alert(a+p);//NAN
var c=arguments[0];
var a=2;
alert(c);//2
alert(a+c);//4
 })(b);

(8)、

function C1(name){
  if(name)
    this.name=name;//new C1().name没有值,所以会去原型链上找,结果是Tom
}
function C2(name){
  this.name=name;//name没有定义,所以new C2().name的值存在,但为undefined
}
function C3(name){
  this.name=name||'John';//new C3().name值为John
}
C1.prototype.name='Tom';
C2.prototype.name='Tom';
C3.prototype.name='Tom';
alert((new C1().name)+(new C2().name)+(new C3().name));//TomundefinedJohn

3、

alert(1&&2);//弹出2
alert(1||2);//弹出1

注意:
1、只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。
2、只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前面的值。
3、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
4、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

4、数组
已知道如下数组:
var arr = [[1,2,2],[3, 4, 5, 5],[6, 7, 8, 9,[11,12,[12,13,[14]]]],10];
编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组:
var res= [1,2,3,4,5,6,7,8,9,10,11,12,13,14]

/** 
 * 解析数组,然后去重,排序 
 * @type Array 
 */  
  
//解析数组
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];  
var newArray = [];  
function getArray(array) {  
    array.forEach(function(e) {  
        if (typeof e === "object") {  
            getArray(e);  
        } else {  
            newArray.push(e);  
        }  
    });  
}  
getArray(arr);  
  
//去重 
Array.prototype.distinct = function() {  
    return this.reduce(function(newArray1, newValue) {  
        if (newArray1.indexOf(newValue) === -1)  
            newArray1.push(newValue);  
        return newArray1;  
    }, []);  
};  
newArray = newArray.distinct();  

//排序 
newArray.sort(function(a, b) {  
    return a - b;  
});  
console.log(newArray);  

未完待续。。。

上一篇下一篇

猜你喜欢

热点阅读