JavaScript可以說是前端的基礎(chǔ)了,對后面框架的學(xué)習(xí)和深入發(fā)展都是很關(guān)鍵的买优,需要打好基礎(chǔ)上枕。
1咐熙、使用js實現(xiàn)toFixed函數(shù),設(shè)置參數(shù)來決定保留幾位小數(shù)
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();//這里調(diào)用的是val=1,如果這里是this.val則指向json內(nèi)部
alert(json.val + val);//10+2=12;
}());
//彈出12
(2)、
window.val = 1;
var json = {
val: 10,
dbl: function() {
this.val *= 2;
}
};
json.dbl();//通過json調(diào)用dbl方法蘸泻,把json里面的val改為20
var dbl = json.dbl;//把dbl函數(shù)賦值給dbl
dbl();//全局作用域琉苇,調(diào)用dbl()函數(shù),把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);//結(jié)果為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沒有值顷窒,所以會去原型鏈上找蛙吏,結(jié)果是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泼诱,結(jié)果都返回“||”后面的值。
2赊锚、只要“||”前面為true治筒,無論“||”后面是true還是false,結(jié)果都返回“||”前面的值改抡。
3矢炼、只要“&&”前面是false,無論“&&”后面是true還是false阿纤,結(jié)果都將返“&&”前面的值;
4句灌、只要“&&”前面是true,無論“&&”后面是true還是false欠拾,結(jié)果都將返“&&”后面的值;
4胰锌、數(shù)組
已知道如下數(shù)組:
var arr = [[1,2,2],[3, 4, 5, 5],[6, 7, 8, 9,[11,12,[12,13,[14]]]],10];
編寫一個程序?qū)?shù)組扁平化去并除其中重復(fù)部分?jǐn)?shù)據(jù),最終得到一個升序且不重復(fù)的數(shù)組:
var res= [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
/**
* 解析數(shù)組藐窄,然后去重资昧,排序
* @type Array
*/
//解析數(shù)組
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);
未完待續(xù)。荆忍。格带。