最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

JS逗號運算符,apply和call調(diào)用模式,匿名函數(shù),arguments,字面量創(chuàng)建【詩書畫唱】

2021-03-31 20:23 作者:詩書畫唱  | 我要投稿

可能的面試部分:apply和call調(diào)用模式的區(qū)別是什么?我個人給出的答案:

apply后面要傳的參數(shù)要以數(shù)組的形式框起來,而call后面要傳的參數(shù)只要用逗號隔開就可以了,他們的效果是差不多的,就是后面?zhèn)鞯膮?shù)的寫法不同,一般我可能選擇call,因為更簡化。

test.apply(param,[1,2,3]);

?test.call(param,1,2,3);


使用這種方法也可以獲取show中要傳,要打印到控制臺的值




個人想法:有時先確定節(jié)奏后考試,寫代碼,做項目,創(chuàng)作游戲,創(chuàng)作音樂,創(chuàng)作視頻,創(chuàng)作動漫,創(chuàng)作專欄等等的話就是更加的高效,有時追求簡化而不缺失等等,是很好的方法。


概括:

個人對逗號運算符的理解和記憶規(guī)則等的方法



0、解釋以下的語法現(xiàn)象:

var arr1 = [[true,2,'one'][3],[1,{"num":47}][1]['num']];

var i = 3;

var arr2 = [(i -= 2,[true,'abc'][i]['length']),[[],[][0]][1]];

1、定義一個函數(shù),他有兩個參數(shù),一個是執(zhí)行次數(shù),一個是需要執(zhí)行的函數(shù),調(diào)用這個函數(shù)。

2、定義一個函數(shù),它的返回值是另外一個函數(shù),另外這個函數(shù)有一個打印語句,請調(diào)用函數(shù)運行這個打印語句。

3、同時定義和運行一個匿名的函數(shù),計算1到100之間的整數(shù)和

4、創(chuàng)建一個貓Cat對象,包含一個體重weight屬性和吃飯eat的方法,每調(diào)用一次eat方法,體重就加1,調(diào)用3次eat方法后,在控制臺打印出貓的體重。

5、創(chuàng)建一個Car對象,包含一個花費屬性cost和run方法,run方法中包含一個參數(shù)公里數(shù)kl,每跑1公里,花費就增加0.8元,調(diào)用run方法后,打印出花費。

6、創(chuàng)建一個Dog對象,包含一個搖尾巴shake的方法,該方法有一個參數(shù)name,當name等于'Tom'時,在控制臺打印‘主人回來了’,其他的值不執(zhí)行任何代碼。

7、創(chuàng)建一個函數(shù),包含一個參數(shù)a,當a是函數(shù)時,執(zhí)行a,否則打印出a的值。

8、在頁面創(chuàng)建三個按鈕,通過js腳本循環(huán)給這三個按鈕綁定一個點擊事件,當點擊第一個按鈕彈出數(shù)字0,第二個按鈕彈出數(shù)字1,第三個按鈕彈出數(shù)字2。。。


字面量創(chuàng)建

我試過,這里如果不使用“聲明函數(shù),

? ? ? ? ? ? ? ??for循環(huán)中調(diào)用傳參的函數(shù)”的方法,

? ? ? ? ? ? ? ??那么在for循環(huán)中直接綁定傳要彈出的值i,

? ? ? ? ? ? ? ??會擊按鈕就都是彈出3,是不對的


fn6()();

參數(shù)是函數(shù)的函數(shù)

返回值是函數(shù)的函數(shù)



逗號運算符最后返回的是()里面用逗號運算符隔開的式子的最后一個式子的結果。

定義聲明函數(shù)

在函數(shù)中自己調(diào)用自己

函數(shù)的內(nèi)置對象

arguments

調(diào)用匿名函數(shù)


函數(shù)的四種調(diào)用模式

方法調(diào)用模式:調(diào)用對象中的一個方法

函數(shù)調(diào)用模式

構造器調(diào)用模式

apply和call調(diào)用模式

如果是構造器調(diào)用模式調(diào)用的函數(shù)首字母必須是大寫

構造函數(shù)Function



自己寫的代碼筆記注釋的部分CTRL+F等等(前面的“概括”等等也可以CTRL+F......):

聲明函數(shù)

調(diào)用函數(shù)

調(diào)用函數(shù)返回函數(shù)

傳alter彈出框功能到函數(shù)中?

代入法理解調(diào)用函數(shù)中的函數(shù)(參數(shù)是函數(shù)的函數(shù))

常用的不命名的匿名函數(shù)的調(diào)用

函數(shù)的4種調(diào)用模式






個人對逗號運算符的理解和記憶規(guī)則等的方法?START

逗號運算符最后返回的是()里面用逗號運算符隔開的式子的最后一個式子的結果。


個人對逗號運算符的理解和記憶規(guī)則等的方法?END







作業(yè)的題目和自己寫出的自己理解的答案 START

0、解釋以下的語法現(xiàn)象:

var arr1 = [[true,2,'one'][3],[1,{"num":47}][1]['num']];

var i = 3;

var arr2 = [(i -= 2,[true,'abc'][i]['length']),[[],[][0]][1]];


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>

//現(xiàn)象1

var arr1 = [[true,2,'one'][3],[1,{"num":47}][1]['num']];




for(var i=0;i<arr1.length;i++){

console.log("arr1的對象:"+arr1[i])


}

//打印結果:arr1的對象:undefined? ? ?arr1的對象:47



//現(xiàn)象2

var i = 3;

var arr2 = [(i -= 2,[true,'abc'][i]['length']),[[],[][0]][1]];





for(var i=0;i<arr2.length;i++){

console.log("arr2的對象:"+arr2[i])}


//打印結果:arr2的對象:3? ? ?arr2的對象:undefined



</script>

<body>

現(xiàn)象1:

按F12看控制臺的打印的結果可以知道arr1是個數(shù)組,

是由[true,2,'one'][3]和[1,{"num":47}][1]['num']這2個對象構成,

[true,2,'one'][3]的意思是獲取[true,2,'one']數(shù)組中的下標為3的對象,因為

true,2,'one']數(shù)組中不存在下標為3的對象,所以就是打印出undefined,



[1,{"num":47}][1]['num']]的意思是先從[1,{"num":47}]數(shù)組中

獲取下標為1的對象,即為{"num":47},之后從下標為1的對象中獲取名為

num屬性的對應的值,就是47.



現(xiàn)象2: 按F12看控制臺的打印的結果可以知道arr2是個數(shù)組,

是由(i -= 2,[true,'abc'][i]['length'])和[[],[][0]][1]這2個對象構成,


因為開始var i = 3;,

(i -= 2,[true,'abc'][i]['length'])中是逗號運算符,

()里面用逗號運算符隔開的對象都會執(zhí)行,如果都進行賦值,就都會變

,i-=2的結果是1,那么[true,'abc'][1]['length']的結果是3,


逗號運算符最后返回的是()里面用逗號運算符隔開的式子的最后一個式子的結果。

[[],[][0]][1]就是取出[[],[][0]]數(shù)組中下標為1的對象[][0],而[][0]

是取出[]中下標為0的對象,因為不存在,所以打印出來時會是undefined

</body>

</html>


1、定義一個函數(shù),他有兩個參數(shù),一個是執(zhí)行次數(shù),一個是需要執(zhí)行的函數(shù),調(diào)用這個函數(shù)。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>

function f(a,b){

for(i=1;i<=a;i++){

b();}

}

f(3,function(){document.write("? 執(zhí)行a這個函數(shù)了")})


</script>

<body>

</body>

</html>


2、定義一個函數(shù),它的返回值是另外一個函數(shù),另外這個函數(shù)有一個打印語句,請調(diào)用函數(shù)運行這個打印語句。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>

function f5(){


return function()

{console.log("三連!看到這句話說明成功用f5()()"

+"調(diào)用了函數(shù)中return的函數(shù)中的控制臺打印語句")}

}


f5()();



</script>

<body>

</body>

</html>


3、同時定義和運行一個匿名的函數(shù),計算1到100之間的整數(shù)和

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>


(function(a){

var h=0;

for (var i=1;i<=100;i++) {

h=h+i;

}

a.write(h)

})(document)


</script>

<body>

</body>

</html>




4、創(chuàng)建一個貓Cat對象,包含一個體重weight屬性和吃飯eat的方法,每調(diào)用一次eat方法,體重就加1,調(diào)用3次eat方法后,在控制臺打印出貓的體重。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>



var Cat={

weight:100,

eat:function(){

this.weight=this.weight+1;

console.log(this.weight+"g")

}

}


Cat.eat();

Cat.eat();

Cat.eat();

</script>

<body>

</body>

</html>


5、創(chuàng)建一個Car對象,包含一個花費屬性cost和run方法,run方法中包含一個參數(shù)公里數(shù)kl,每跑1公里,花費就增加0.8元,調(diào)用run方法后,打印出花費。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>


</head>

<script>



var Car={

cost:0.8,

run:function(kl){

//消費指的是總消費還是每公里的單價消費?這題沒說得明確。所以我說這題有歧義。

console.log("這題其實有歧義,這題我簡化理解為每跑1公里,"+

"總消費就是加0.8元,所以cost為0.8元/公里。"+"跑了"+kl+"公里,"+

"累計花費為:"+0.8*kl+"元")

}

}


Car.run(1);


</script>

<body>


</body>

</html>


6、創(chuàng)建一個Dog對象,包含一個搖尾巴shake的方法,該方法有一個參數(shù)name,當name等于'Tom'時,在控制臺打印‘主人回來了’,其他的值不執(zhí)行任何代碼。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>


var Dog={


shake:function(name){

name=='Tom'?console.log("主人我回來了"):false;

}

}


Dog.shake('Tom');

Dog.shake('Jerry');

</script>

<body>

</body>

</html>


7、創(chuàng)建一個函數(shù),包含一個參數(shù)a,當a是函數(shù)時,執(zhí)行a,否則打印出a的值。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>


function fn7(a,msg){

if(typeof a === 'function') {

a(msg);

}else {

console.log(a);

}

}

fn7(function(str){

alert(str);

},'詩書畫唱叫你三連和關注!看到這句話說明,調(diào)用時傳的是傳參數(shù)的函數(shù)!');

fn7("看到這句話說明,調(diào)用時,傳的不是函數(shù)!",'詩書畫唱叫你三連和關注!');


</script>

<body>

</body>

</html>


8、在頁面創(chuàng)建三個按鈕,通過js腳本循環(huán)給這三個按鈕綁定一個點擊事件,當點擊第一個按鈕彈出數(shù)字0,第二個按鈕彈出數(shù)字1,第三個按鈕彈出數(shù)字2。。。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>


window.onload=function(){

var arr=document.getElementsByTagName("button");



function f(i){

arr[i].addEventListener('click',function(){


? ? ? ? ? ? ? ? alert(i);/*——>我試過,這里如果不使用“聲明函數(shù),

? ? ? ? ? ? ? ? for循環(huán)中調(diào)用傳參的函數(shù)”的方法,

? ? ? ? ? ? ? ? 那么在for循環(huán)中直接綁定傳要彈出的值i,

? ? ? ? ? ? ? ? 會擊按鈕就都是彈出3,是不對的*/

? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? });


}



for(var i=0;i<arr.length;i++){


f(i);


}}

</script>



<body>

<button>按鈕1</button>

<button>按鈕2</button>

<button>按鈕3</button>

</body>

</html>




作業(yè)的題目和自己寫出的自己理解的答案 END

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

//定義聲明函數(shù)

//1函數(shù)聲明

function fn1(){

console.log('Hello world');

}

//2字面量創(chuàng)建

//var o = {};

//var arr = [];?

//將一個沒有名字的函數(shù)賦值給了變量fn2

var fn2 = function(){


}

//3構造函數(shù)Function

var fn3 = new Function('alert("Hello world");');

//調(diào)用一個函數(shù):在需要被調(diào)用的函數(shù)名后面加上一對括號

//fn1();

//fn2();

//fn3();

//函數(shù)的參數(shù)

function fn4(a,b,c){

console.log(a,b,c);

}

//調(diào)用函數(shù)時,如果參數(shù)的個數(shù)和函數(shù)的參數(shù)列表的個數(shù)不一樣,

//那么調(diào)用這個函數(shù)時是不會報錯的,參數(shù)的值會對號入座,不夠的值就用undefined代替

//fn4(1,5);//1,5,undefined

//fn4(1,5,6,7);//1,5,6


//JS函數(shù)的返回值類型是可以變化的

function fn5(b){

if(b) {

return {name:'Tome'};

} else {

return 'Hello';

}

}

//console.log(fn5(true).name);

//返回值是函數(shù)的函數(shù)

function fn6(){

return function(){

alert('Hehe');

}

}

//var f = fn6();

//f();

//fn6()();

//參數(shù)是函數(shù)的函數(shù)

function fn7(a,msg){

if(typeof a === 'function') {

a(msg);

}else {

console.log('a不是一個函數(shù)');

}

}

// fn7(function(str){

// alert(str);

// },'你好');

//調(diào)用匿名函數(shù)

(function(doc){

doc.write('Hello world');

})(document);


//函數(shù)的四種調(diào)用模式:

//1方法調(diào)用模式:調(diào)用對象中的一個方法

var stu = {

score: 60,

study: function(){

//console.log(this == stu);

this.score += 5;

}

};

stu.study();

stu.study();

//console.log(stu.score);

var cat = {

name: '咪咪',

eat: function(){

console.log(this == cat);

console.log(this.name);

}

};

//cat.eat();

//2函數(shù)調(diào)用模式

function add(a,b){

console.log(this == window);

return a + b;

}

add(1,2);

//3構造器調(diào)用模式

//如果是構造器調(diào)用模式調(diào)用的函數(shù)首字母必須是大寫

var Stu = function(n){

this.name = n;

}

var s1 = new Stu('小明');//this == s1

console.log(s1.name);

var s2 = new Stu('小紅');//this == s2

console.log(s2.name);


var Cat = function(a){

this.age = a;

}

var c1 = new Cat(2);//this == c1

console.log(c1.age);


//4apply和call調(diào)用模式

function test(x,y,z){

console.log(this.flag);

console.log(x,y,z);

}

//var flag = 'abc';

//test();

// var param = {

// flag: 'phoniex'

// };

//改變了test函數(shù)中this的指向,this == param

// test.apply(param,[1,2,3]);

// test.call(param,1,2,3);


function perform(str){

console.log(str + this.name);

}

var p = {

name: '張三'

};

perform.call(p,'你好');


//函數(shù)的內(nèi)置對象

function show(){

for(var i = 0;i < arguments.length;i ++) {

console.log(arguments[i]);

}

}

show(1,2,3,'one','mee');


// function (){

// //在函數(shù)中自己調(diào)用自己

// arguments.callee();

// }

</script>

</head>

<body>

</body>

</html>

<!--

CTRL+F:

聲明函數(shù)

調(diào)用函數(shù)

調(diào)用函數(shù)返回函數(shù)

傳alter彈出框功能到函數(shù)中?

代入法理解調(diào)用函數(shù)中的函數(shù)(參數(shù)是函數(shù)的函數(shù))

常用的不命名的匿名函數(shù)的調(diào)用

函數(shù)的4種調(diào)用模式

-->


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>

//聲明函數(shù) START

var f1=function(){}

//var f2=new function()


function f3(a,b,c){

console.log(a,b,c);

}




function f4(b){

if(b){

return {name:'詩書畫唱'}

}

else{

return "三連"

}

}






//聲明函數(shù) END



// 調(diào)用函數(shù) START

//f2();

f3("三連","關注","詩書畫唱")


console.log(f4(true).name)

// 調(diào)用函數(shù) END





//調(diào)用函數(shù)返回函數(shù) START

function f5(){

return function(){alert("三連!")}

}


f5()();


//調(diào)用函數(shù)返回函數(shù) END




//傳alter彈出框功能到函數(shù)中 START

function f6(a){

a("三連!")

}


f6(alert);

//傳alter彈出框功能到函數(shù)中 END



//代入法理解調(diào)用函數(shù)中的函數(shù)(參數(shù)是函數(shù)的函數(shù)) START


function f7(a,msg)

{

if(typeof a==="function"){

a(msg)

}

else{

console.log("看到這句話,說明傳過來的a參數(shù)不是function函數(shù)")

}

}


f7(function(str){alert(str);},"給詩書畫唱三連!看到這句話說明msg被賦值了!");


//代入法理解調(diào)用函數(shù)中的函數(shù)(參數(shù)是函數(shù)的函數(shù)) END




//常用的不命名的匿名函數(shù)的調(diào)用 START

(function(a){a.write("詩書畫唱提醒你!看到這句話說明成功調(diào)用了匿名函數(shù)中的方法!");})(document)


//常用的不命名的匿名函數(shù)的調(diào)用 END


//函數(shù)的4種調(diào)用模式 START


//1.方法調(diào)用模式

var a={

score:100,

do:function(){

console.log("三連!看到這句話說明成功調(diào)用了a對象中的do方法!")

console.log(this===a)//————>(這里的this等價于當前a對象)

console.log(this.score+"分")//————>(這里的this表示當前a對象)

}

}


a.do();

//2.函數(shù)調(diào)用模式


function f(a,b){

console.log(this)//——>這里打印出的內(nèi)容是Window,這里的this代表的是Window

return a+b;

}


f("關注"+"詩書畫唱")



//3.構造器調(diào)用模式


var F=function(n){

this.name=n;//——>this是調(diào)用時,new出來的對象,比如下面的f1


}

var f1=new F("點贊!");

var f2=new F("關注!");

console.log(f1.name)

console.log(f2.name)

//函數(shù)的4種調(diào)用模式 END



</script>

<body>

</body>

</html>


JS逗號運算符,apply和call調(diào)用模式,匿名函數(shù),arguments,字面量創(chuàng)建【詩書畫唱】的評論 (共 條)

分享到微博請遵守國家法律
山西省| 都昌县| 苏州市| 堆龙德庆县| 乌苏市| 玉山县| 定襄县| 浦江县| 新密市| 房山区| 邢台县| 阿克| 确山县| 彭阳县| 慈利县| 铁力市| 武山县| 建宁县| 昌宁县| 湟中县| 依兰县| 湖北省| 清镇市| 延吉市| 彭山县| 延安市| 阿荣旗| 黄山市| 文成县| 吉安县| 霸州市| 庄浪县| 关岭| 蒙自县| 大荔县| 隆昌县| 乡城县| 南通市| 恩平市| 西峡县| 安塞县|