1.js基础语法
1.Js基礎語法 1.數據類型 JavaScript不區分整數和浮點數,統一用Number表示 NaN; // NaN表示Not a Number,當無法計算結果時用NaN表示 Infinity; // Infinity表示無限大,當數值超過了JavaScript的Number所能表示的最大值時,就表示為Infinity 2.比較運算符 要特別注意相等運算符==。JavaScript在設計時,有兩種比較運算符: 第一種是==比較,它會自動轉換數據類型再比較,很多時候,會得到非常詭異的結果; 第二種是===比較,它不會自動轉換數據類型,如果數據類型不一致,返回false,如果一致,再比較。 由于JavaScript這個設計缺陷,不要使用==比較,始終堅持使用===比較。 另一個例外是NaN這個特殊的Number與所有其他值都不相等,包括它自己: NaN === NaN; // false 唯一能判斷NaN的方法是通過isNaN()函數: isNaN(NaN); // true 最后要注意浮點數的相等比較: 1 / 3 === (1 - 2 / 3); // false 這不是JavaScript的設計缺陷。浮點數在運算過程中會產生誤差,因為計算機無法精確表示無限循環小數。要比較兩個浮點數是否相等,只能計算它們之差的絕對值,看是否小于某個閾值: Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true null和undefined null表示一個“空”的值,它和0以及空字符串''不同,0是一個數值,''表示長度為0的字符串,而null表示“空”。 在其他語言中,也有類似JavaScript的null的表示,例如Java也用null,Swift用nil,Python用None表示。但是,在JavaScript中,還有一個和null類似的undefined,它表示“未定義”。 JavaScript的設計者希望用null表示一個空的值,而undefined表示值未定義。事實證明,這并沒有什么卵用,區分兩者的意義不大。大多數情況下,我們都應該用null。undefined僅僅在判斷函數參數是否傳遞的情況下有用。 3.數組 3.1聲明數組: 數組用[]表示,元素之間用,分隔。 或者:new Array(1, 2, 3, "hello"); 3.2改變數組長度: var arr = [1, 2, 3]; arr.length;//這時候長度是3 arr.legth = 7;//這時長度變為7,其中后面4個為未定義的; 3.3數組的常用方法: indexOf();//查找數組中元素的下標 slice();//用下標值截取數組中的參數返回新數組,不輸入參數返回所有 push();//在Array后添加若干個變量 pop();//刪除數組的最后一個元素 unshift();//在數組最前面添加元素 shift();//刪除數組最前面的一個元素 sort()://排序數組 reverse();//反轉數組順序 splice(0, 1, "good", "food");//按照下標值增刪改元素(只輸下標值為刪除) concat();//合并數組,類似“+”號使用 join("*");使用指定符號鏈接數組元素 4.對象 4.1JavaScript的對象是一組由鍵-值組成的無序集合,例如: var person = { name: 'Bob', age: 20, tags: ['js', 'web', 'mobile'], city: 'Beijing', hasCar: true, zipcode: null }; JavaScript對象的鍵都是字符串類型,值可以是任意數據類型。上述person對象一共定義了6個鍵值對,其中每個鍵又稱為對象的屬性,例如,person的name屬性為'Bob',zipcode屬性為null。 要獲取一個對象的屬性,我們用對象變量.屬性名的方式: person.name; // 'Bob' person.zipcode; // null 4.2in操作符 "name" in person;//判斷name是否存在于person中true person.hasOwnProperty("name");//判斷name屬性是否為自身擁有(非繼承)true 5.變量 js是動態語言,可以兼容多種類型: var a = 10.0; a = "你好"; 6.strict模式(全局變量聲明) 不聲明變量類型,則為全局變量,如: i = 15; 在代碼的第一行聲明"use strict"則進入嚴格模式,嚴格模式下禁止不聲明變量類型而直接使用; 7.拼接字符串: 1.一般情況下使用”+“標示即可 2.字符太多可使用ES6模板字符串方式: 例子: var name = '小明'; var age = 20; var message = `你好, ${name}, 你今年${age}歲了!`; alert(message); 8.字符串的常用方法; 8.1獲取字符串長度: var s = 'Hello, world!'; s.length; // 13 8.2使用數組下標(索引)取值: var s = 'Hello, world!'; s[0]; // 'H' s[6]; // ' ' s[7]; // 'w' s[12]; // '!' s[13]; // undefined 超出范圍的索引不會報錯,但一律返回undefined 注意:使用字符串索引方式賦值是不允許的;續上: s[7] = "q";//內容還是w,不發生變化; 8.3JavaScript為字符串提供了一些常用方法,注意,調用這些方法本身不會改變原有字符串的內容,而是返回一個新字符串: toUpperCase toUpperCase()把一個字符串全部變為大寫: var s = 'Hello'; s.toUpperCase(); // 返回'HELLO' toLowerCase toLowerCase()把一個字符串全部變為小寫: var s = 'Hello'; var lower = s.toLowerCase(); // 返回'hello'并賦值給變量lower lower; // 'hello' indexOf indexOf()會搜索指定字符串出現的位置: var s = 'hello, world'; s.indexOf('world'); // 返回7 s.indexOf('World'); // 沒有找到指定的子串,返回-1 substring substring()返回指定索引區間的子串: var s = 'hello, world' s.substring(0, 5); // 從索引0開始到5(不包括5),返回'hello' s.substring(7); // 從索引7開始到結束,返回'world' 9.for...in...遍歷數組(類似java增強的for循環) var o = { name: 'Jack', age: 20, city: 'Beijing' }; for (var key in o) { alert(key); // 'name', 'age', 'city' } 10.數據結構Map和set(都無法使用下標遍歷) 數據結構set不許重復key 10.1Map的方法: var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); m.set("dog",88);//增加元素 m.get('dog'); // 88 10.2Set的方法: "use strict" var m = new Set([1,2,3]); m.add(5); m.delete(1);//刪除1這個元素 10.3Map和Set的遍歷 使用for...of...遍歷 Set:var m = new Set([1,2,3]); for (var k of m) { alert(k); } Map:var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); m.set("dog",88);//增加元素 m.get('dog'); // 88 for (var k of m) { alert(k); } 10.4for...in...和for...of...的區別 var a = ['A', 'B', 'C']; a.name = 'Hello'; for (var x in a) { alert(x); // '0', '1', '2', 'name' } var a = ['A', 'B', 'C']; a.name = 'Hello'; for (var x of a) { alert(x); // 'A', 'B', 'C' }
轉載于:https://www.cnblogs.com/Nick-Hu/p/8320211.html
總結
- 上一篇: 迟到的2017年终总结与2018目标规划
- 下一篇: (转)计算机网络基础知识总结