日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

原生js 小知识点

發(fā)布時間:2024/6/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原生js 小知识点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#eval 接受一個字符串,并將其內(nèi)容視為好像原先就寫成了代碼一樣。

function foo(str){
? ? "use strict";
? ? eval(str);
? ? console.log(a);//3

}
foo("var a = 3;");

?

但是在嚴格模式下,eval會自己增加一個作用域。結(jié)果如下:

function foo(str){
? ? "use strict";
? ? eval(str);
? ? console.log(a);//Uncaught ReferenceError: a is not defined

}
foo("var a = 3;");

?

#立即執(zhí)行表達式

(function foo(num){

? ? console.log(3,num);

})(45);

也可以寫成

(function foo(num){

? ? console.log(3,num);

}(45));

?

#'use strict'; ?

規(guī)范js的代碼格式,建議每個js文件都用之

?

#var?”變量提升“現(xiàn)象,只是聲明的提升,定義或者賦值不提升

// var 的情況 console.log(foo); // 輸出undefined var foo = 2; // let 的情況 console.log(bar); // 報錯ReferenceError let bar = 2;

PS:const用法:
const PI = 3.14;

?

# ==與===區(qū)別

? ? ===需要參數(shù)類型相同,==則不需要類型相同

?

#js的循環(huán)

(1)of? in區(qū)別

? ?of: 遍歷集合本身,in則遍歷每一個鍵值對;即,in的范圍要大一些。

var a = ['A', 'B', 'C']; a.name = 'Hello';

? ? of包含:A B C;in包含了A B C name

? ?XXX

(1)forEach

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); m.forEach(function (value, key, map) { console.log(""+key+"-"+value); });

?

#數(shù)組的高階函數(shù)

? ? (1)map? :每一個元素做操作

? ? ? var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
? ? ? var results = arr.map((x)=>{return x^2;}); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
? ? ? console.log(results);

? ? ?(2)reduce:每2個元素操作,不斷迭代

效果:[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

? ? ? var arr = [1, 3, 5, 7, 9];
? ? ? arr.reduce(function (x, y) {
? ? ? ? ? return x * 10 + y;
? ? ? }); // 13579

? ? ?(3)filter函數(shù):過濾一些元素

var arr = [1, 2, 4, 5, 6, 9, 10, 15]; var r = arr.filter(function (x) { return x % 2 !== 0; }); r; // [1, 5, 9, 15]

? ? ?(4)sort:排序

var arr = [10, 20, 1, 2]; arr.sort(function (x, y) { if (x < y) { return 1; } if (x > y) { return -1; } return 0; }); // [20, 10, 2, 1]

?

#閉包:閉包經(jīng)常用于創(chuàng)建含有隱藏數(shù)據(jù)的函數(shù),閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。

? ? ?參看鏈接https://kb.cnblogs.com/page/110782/。

? ? ? http://www.ruanyifeng.com/blog/

?

?

#閉包中的this

https://www.cnblogs.com/nuanriqingfeng/p/5789003.html

?

#call apply

所有函數(shù)都有call apply這2個方法。如果不適用他們,那么就需要給函數(shù) 顯式傳入一個上下文對象,略顯麻煩。

method.call(obj);//method為方法名,obj為執(zhí)行此方法的對象。

?????????????? function sayHello() {? alert(this.name);? }

?????????????? let me = {"name":"leo","age":22};

??????????????sayHello.call(me);

?

call和apply的第一個參數(shù)都是對象,call后續(xù)的參數(shù)是傳入的參數(shù)序列(不是數(shù)組),apply的第二個參數(shù)是一個數(shù)組。? call(obj,p1,p2,p3);????????? apply(obj,[p1,p2,p3]);

?? ?function add(c,d){
??????? return this.a + this.b + c + d;
??? }
??? var s = {a:1, b:2};
??? console.log(add.call(s,3,4)); // 1+2+3+4 = 10
??? console.log(add.apply(s,[5,6])); // 1+2+5+6 = 14

#對象屬性配置

var myObject = {a:2};

Object.getOwnPropertyDescriptor(myOjbect,"a");? //獲取屬性的配置

Object.defineProperty(myOjbect,"a",{?? //設(shè)定屬性的配置

????value:2,

??? writable:true,

????configurable:true,

??? enumerable:true

});

//value :2??????????????? 值??????????【好理解】

//writable:true???????? 可寫???????【好理解】

//enumerable:true? 可枚舉?????【如果設(shè)置為false,那么對象(含數(shù)組)的for in循環(huán)將獲取不到該屬性,】

//configurable:true?? 可配置???【 把configurable 修改成false 是單向操作,無法撤銷!】

?

PS:通過configurable和writable可以添加一個常量屬性。

?

#取消鏈接的href

? href="javacript:void(0);"

?

?

#XXXX

XXX

? ?XXX

XXX

?

#XXXX

XXX

? ?XXX

XXX

?

#XXXX

XXX

? ?XXX

XXX

?

#XXXX

XXX

? ?XXX

XXX

?

#XXXX

XXX

? ?XXX

XXX

?

#XXXX

XXX

? ?XXX

XXX

?

#XXXX

XXX

? ?XXX

XXX

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/dongfangchun/p/8995486.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的原生js 小知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。