亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript自學筆記(必看篇)

2019-11-20 09:37:03
字體:
來源:轉載
供稿:網友

0-判斷變量、參數是否初始化

if(x){} //變量被初始化了或者變量不為空或者變量不為零

1-聲明函數不需要聲明返回值、參數類型,句尾甚至都不需要';'

function sum(i1,i2){return i1+i2}

2-直接聲明匿名函數立即使用

var f=function(i1,i2){return i1+i2;}; alert(f(1,2));//普通匿名函數alert(function(i1,i2){return i1+i2;}(3,4));//直接聲明,立即使用

3-js中沒有類的概念,于是有些方法就長的像類了

function Person(name,age){this.Name=name;//動態增加屬性,類似于C#里的dynamic A = new ExpendoObject();this.Age=age;this.SayHello=function(){alert('Hello,My name is '+name+' I am '+age+' years old.')};}var p1=new Person('lorry',21);p1.SayHello(); //像類一樣調用p1.Gender='男';    //動態增加‘性別'屬性alert(p1.Gender);

4-Array對象就是數組,定義數組不用預先限定長度

var arr=new Array();arr[0]=0;arr[1]=1;arr[2]=2;for(var i=0;i<=arr.length-1;i++){alert(arr[i]);}

5-Array是數組,也是Dictionary,也是Stack

var dict=new Array();//作為Dictionary使用dict['我']='wo';dict['愛']='ai';dict['你']='ni';alert(dict['我']); //通過鍵值調用alert(dict.愛); //像調用屬性一樣調用(動態語言的特性) for(var k in dict){ //js中的遍歷 alert(k);  //'我','愛','你'-->打印出的是key}for(var k of dict){ //js中的遍歷 alert(k);  //'wo','ai','ni'-->打印出的是value}var arr = [1,2,3,4,5];//Array的簡化創建方式var arr = {"lorry":21,"cloud":20};//字典風格的創建方式

6-遍歷當前頁面能夠調用的所有元素

var s=null;for(var k in document){//對象的屬性都是以key的形式出現的 s+=k+" ;";}alert(s);

7-使用類似Array的下標操作獲取字符串某個指定位置的字符

var s = 'Hello, world!';s[0]; // 'H's[6]; // ' 's[12];    // '!'s[13];    // undefined 超出范圍的索引不會報錯,但一律返回undefined需要特別注意的是,字符串是不可變的,如果對字符串的某個索引賦值,不會有任何錯誤,但是,也沒有任何效果:var s = 'Test';s[0] = 'X';alert(s);  // s仍然為'Test'

8-改大寫小寫

var s = 'Hello';s.toUpperCase();  // 返回'HELLO'    var s = 'Hello';s.toLowerCase();  // 返回'hello'

9-搜索指定字符串出現的位置

var s = 'hello, world';s.indexOf('world'); // 返回7s.indexOf('World'); // 沒有找到指定的子串,返回-1

10-獲取字符串指定索引區間的子串

var s = 'hello, world's.substring(0, 5);  // 從索引0開始到5(不包括5),返回'hello's.substring(7);// 從索引7開始到結束,返回'world'

11-JavaScript的對象是一種無序的集合數據類型,它由若干鍵值對組成

var xiaoming = { name: '小明', birth: 1990, school: 'No.1 Middle School', height: 1.70, weight: 65, score: null//最后一個鍵值對不需要在末尾加','};xiaoming.name;   // '小明'xiaoming.birth;    // 1990訪問屬性是通過.操作符完成的,但這要求屬性名必須是一個有效的變量名。如果屬性名包含特殊字符,就必須用[]括起來:var xiaohong = {  name: '小紅',  'middle-school': 'No.1 Middle School'};xiaohong['middle-school'];   // 'No.1 Middle School'xiaohong['name'];  // '小紅'xiaohong.name;    // '小紅'xiaohong.age; // undefined

12-檢測xiaoming是否擁有某一屬性,用in操作符:

'name' in xiaoming;// true'grade' in xiaoming;// false***如果in判斷一個屬性存在,這個屬性不一定是xiaoming的,它可能是xiaoming繼承得到的:'toString' in xiaoming;   // true***要判斷一個屬性是否是xiaoming自身擁有的,而不是繼承得到的,可以用hasOwnProperty()方法:xiaoming.hasOwnProperty('name');    // truexiaoming.hasOwnProperty('toString'); // false

13-Map

var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);//二維數組初始化法m.get('Michael'); // 95 var m = new Map();// 直接初始化一個空Mapm.set('Adam', 67); // 添加新的key-valuem.set('Bob', 59);m.has('Adam');    // 是否存在key 'Adam': truem.get('Adam');    // 67m.delete('Adam'); // 刪除key 'Adam'm.get('Adam');    // undefined var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);for (var n of m) {   // 遍歷Map alert(n[1] + '=' + n[0]);}

14-iterable內置的forEach方法,它接收一個函數,每次迭代就自動回調該函數。

var a = ['A', 'B', 'C'];a.forEach(function (element, index, array) { // element: 指向當前元素的值 // index: 指向當前索引 // array: 指向Array對象本身 alert(element);});    Set與Array類似,但Set沒有索引,因此回調函數最多兩個參數:var s = new Set(['A', 'B', 'C']);s.forEach(function (element, set) { alert(element);}); Map的回調函數參數依次為value、key和map本身:var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);m.forEach(function (value, key, map) { alert(value);});    var a = ['A', 'B', 'C'];a.forEach(function (element) { alert(element);});

15-用Array的map()方法,傳入我們自己的函數,就得到了一個新的Array作為結果:

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];arr.map(function(x){return x*x;}).forEach(function (element) {alert(element);// [1, 4, 9, 16, 25, 36, 49, 64, 81]});

16-用map()把Array的所有數字轉為字符串:

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];arr.map(String); // ['1', '2', '3', '4', '5', '6', '7', '8', '9']

17-用Array的reduce()做累積計算

var arr = [];for (var x = 1; x <= 100; x++) { arr.push(x); //將1~100放入數組}alert(arr.reduce(function(x,y){return x+y;   //對arr的所有對象累積求和,返回求和結果}));

18-用reduce()做一個牛逼的轉換:把[1, 2, 5, 8, 0]變換成整數12580

var arr = [1, 2, 5, 8, 0];alert(arr.reduce(function(x,y){return x*10+y;}));

19-用filter()把Array的某些元素過濾掉

var arr = [0,1,2,3,4,5,6,7,8,9];alert(arr.filter(function(x){return x%2===0;}));//0,2,4,6,8 //返回true則保留    把一個Array中的空字符串刪掉var arr = ['A', '', 'B', null, undefined, 'C', ' '];alert(arr.filter(function (s) { return s && s.trim(); // 注意:IE9以下的版本沒有trim()方法})); // ['A', 'B', 'C']

20-Array的sort()方法默認把所有元素先轉換為String再排序,于是...

[10, 20, 1, 2].sort(); // [1, 10, 2, 20]因此如果要按數字大小排序,可以這么寫:var arr = [];for (var x = 1; x <= 10; x++) { arr.push(x);}document.write(arr+"<br/>");document.write(arr.sort(function(x,y){return x<y?true:false;})); 若要忽略字母大小寫影響,則要先轉化為大寫或小寫var arr = ['Google', 'apple', 'Microsoft'];alert(arr.sort(function (s1, s2) { var x1 = s1.toUpperCase(); var x2 = s2.toUpperCase(); return x1 < x2 ?false:true;})); // ['apple', 'Google', 'Microsoft']

21-閉包(Closure)程序結構

 

①將函數作為返回值賦值給參數,調用該參數獲得計算結果var arr = [];for(var n=1;n<101;n++){arr.push(n);}function lazy_sum(arr){ var sum = function(){ return arr.reduce(function(x,y){ return x+y; }); } return sum;}var f = lazy_sum(arr);alert(f());    ②返回的函數并沒有立刻執行,而是直到調用了f()才執行function count() { var arr = []; for (var i=1; i<=3; i++) { arr.push(function () { return i * i; }); } return arr;}var results = count(); //results里存了3個functionvar f1 = results[0];var f2 = results[1];var f3 = results[2];    f1(); // 16 返回的函數引用了變量i,但它并非立刻執行。f2(); // 16 等到3個函數都返回時,它們所引用的變量i已經變成了4,f3(); // 16 因此最終結果為16***返回閉包時牢記:返回函數不要引用任何循環變量,或者后續會發生變化的變量! ③如果一定要引用循環變量怎么辦? 方法是再創建一個函數,用該函數的參數綁定循環變量當前的值, 無論該循環變量后續如何更改,已綁定到函數參數的值不變:function count() { var arr = []; for (var i=1; i<=3; i++) { arr.push(function(n){ return function(){ return n*n; } }(i)); } return arr;} var results = count();var f1 = results[0];var f2 = results[1];var f3 = results[2]; alert(f1()); // 1alert(f2()); // 4alert(f3()); // 9 ④在沒有class機制,只有函數的語言里,借助閉包,可以封裝一個私有變量function creat_counter(init){ var n = init||0; return{ add:function(){ n+=1; return n; } }}    var c = creat_counter();alert(c.add());//1alert(c.add());//2alert(c.add());//3***在返回的對象中,實現了一個閉包,該閉包攜帶了局部變量n,并且,從外部代碼根本無法訪問到變量n。換句話說,閉包就是攜帶狀態的函數,并且它的狀態可以完全對外隱藏起來。 ⑤利用Math.pow(x, y)計算x^2或x^3 //Math.pow(x, y)-->x^yfunction make_pow(y){ return function(x){ return Math.pow(x,y); }}    var pow2 = make_pow(2)var pow3 = make_pow(3)    alert(pow2(3))//9alert(pow3(3))//27

22-箭頭函數(目前僅firefox支持) //參數=>函數體

var f = x => x*x*xalert(f(3)) //27

23-用generator產生斐波那契數列

function* fib(max){ var t,a=0,b=1,n=1; while(n<=max){ yield a; t=a+b; a = b; b = t; n++; } return a;}for (var x of fib(10)) {//用for ... of循環迭代generator對象  document.write(x+' '); // 依次輸出0, 1, 1, 2, 3} 用generator產生一個自增的ID(無需全局變量)function* next_id(){for(var x = 1; x < 100; yield x++ );}var g = next_id();alert(g.next().value);//1alert(g.next().value);//2alert(g.next().value);//3

以上就是小編為大家帶來的JavaScript自學筆記(必看篇)全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合中文字幕在线| 亚洲精品国产美女| 亚洲女人天堂色在线7777| www.亚洲免费视频| 日韩美女视频中文字幕| 7m第一福利500精品视频| 亚洲新声在线观看| 中国日韩欧美久久久久久久久| 欧美成人午夜影院| 中日韩午夜理伦电影免费| 欧美丝袜美女中出在线| 日韩中文在线中文网在线观看| 亚洲国产精品一区二区久| 亚洲精品国产精品乱码不99按摩| 欧美日韩国产精品| 日韩电影免费观看中文字幕| 日韩在线观看精品| 国产一区视频在线播放| 亚洲一区亚洲二区| 欧洲亚洲免费在线| 亚洲一区第一页| 亚洲视频在线观看视频| 欧美成aaa人片免费看| 亚洲第一区中文字幕| 欧美性猛交xxxx富婆| 欧美国产中文字幕| 成人午夜高潮视频| 91网站在线免费观看| 国产精品三级美女白浆呻吟| 国产精品com| 亚洲网站在线观看| 粗暴蹂躏中文一区二区三区| 亚洲国产精品va在线观看黑人| 色樱桃影院亚洲精品影院| 国产精品久久婷婷六月丁香| 成人免费观看a| 国产成人精品999| 久久久久久九九九| 韩日精品中文字幕| 国语自产精品视频在线看抢先版图片| 国产亚洲欧美日韩一区二区| 好吊成人免视频| 欧美性20hd另类| 亚洲老板91色精品久久| 中文字幕日韩免费视频| 色悠悠国产精品| 美女av一区二区| 久久久久久网站| 欧美裸体视频网站| 亚洲网在线观看| 最近2019年日本中文免费字幕| 国语自产在线不卡| 欧美日本啪啪无遮挡网站| 久久国产精品久久久久久久久久| 正在播放欧美视频| 亚洲aⅴ日韩av电影在线观看| 亚洲a区在线视频| 国产精品久久久久福利| 国产一区av在线| 午夜精品一区二区三区在线视| 国产日韩欧美日韩| 国产综合香蕉五月婷在线| 日韩av理论片| 色噜噜久久综合伊人一本| 国产精品久久国产精品99gif| 国产精品久久久久久久久免费| 日韩国产欧美精品一区二区三区| 中文字幕精品久久久久| 亚洲人成电影网站色www| 国产网站欧美日韩免费精品在线观看| 亚洲欧美日韩精品久久| 最近2019年日本中文免费字幕| 国产有码在线一区二区视频| 55夜色66夜色国产精品视频| 国产精品美女主播| 国产精品高精视频免费| 日日噜噜噜夜夜爽亚洲精品| 成人免费视频在线观看超级碰| 国产精品视频1区| 96国产粉嫩美女| 日韩视频第一页| 亚洲a中文字幕| 欧美日本中文字幕| 国产亚洲一区二区在线| 亚洲欧洲国产一区| 欧美国产日本在线| 亚洲精品欧美一区二区三区| 97精品视频在线| 国产精品久久久久久久久久新婚| 欧美日韩免费看| 高清亚洲成在人网站天堂| 俺去亚洲欧洲欧美日韩| 亚洲人成在线免费观看| 九九精品在线播放| 俺去亚洲欧洲欧美日韩| 怡红院精品视频| 欧美激情高清视频| 欧美日韩国产综合新一区| 亚洲男人av电影| 国产精品久久久91| 成人激情在线播放| 亚洲国产成人精品电影| 国外日韩电影在线观看| 日韩电影视频免费| 国产精品高清在线观看| 成人久久久久久| 日韩亚洲精品视频| 岛国av一区二区在线在线观看| 91国语精品自产拍在线观看性色| 欧美激情乱人伦| 欧美日韩亚洲国产一区| 欧美激情免费视频| 成人写真视频福利网| 国产精品v片在线观看不卡| 色噜噜国产精品视频一区二区| 国产精品一区二区电影| 欧美日韩色婷婷| 8090理伦午夜在线电影| 国产精品入口日韩视频大尺度| 国产精品久久久久久一区二区| 91精品久久久久久久久久另类| 精品视频www| 97不卡在线视频| 欧美激情视频网址| 色狠狠av一区二区三区香蕉蜜桃| 午夜精品久久久久久99热| 韩国v欧美v日本v亚洲| 国产区精品在线观看| 国产精品美女午夜av| 免费97视频在线精品国自产拍| 中文字幕免费精品一区高清| 欧美激情综合色综合啪啪五月| 麻豆国产va免费精品高清在线| 精品伊人久久97| 亚洲石原莉奈一区二区在线观看| 中文字幕国产亚洲2019| 国产精品福利网| 国产精品99久久久久久人| 91亚洲精品久久久久久久久久久久| 国产精品专区一| 色无极亚洲影院| 亚洲第一福利网站| 亚洲高清久久久久久| 亚洲国产精品女人久久久| 美女999久久久精品视频| 亚洲大胆人体在线| 亚洲女在线观看| 欧美人成在线视频| 国产拍精品一二三| 国产精品va在线播放我和闺蜜| 亚洲欧美日韩精品久久亚洲区| 精品国产网站地址| 久久国产精品视频| 精品人伦一区二区三区蜜桃免费| 黑人极品videos精品欧美裸| 国产欧美精品久久久| 国产97在线播放| 伊人成人开心激情综合网| 久久精品电影一区二区| 亚洲图片制服诱惑| 欧美大片在线影院| 欧美尤物巨大精品爽| 成人在线国产精品| 久久成人18免费网站|