<script> // 在這裏寫你的JS代碼 </script>
<script src="myscript.js"></script>
// 這是單行註釋 /* 這是 多行註釋 */
JavaScript中的語句要以分號(;)爲結束符。python
var name = "Alex"; var age = 18;
注意:正則表達式
變量名是區分大小寫的。推薦使用駝峯式命名規則。保留字不能用作變量名。數組
ES6新增了let命令,用於聲明變量。其用法相似於var,可是所聲明的變量只在let命令所在的代碼塊內有效。例如:for循環的計數器就很適合使用let命令。dom
for (let i=0;i<arr.length;i++){...}
總結,var做用於全局,let做用於局部函數
JavaScript擁有動態類型this
var x; // 此時x是undefined var x = 1; // 此時x是數字 var x = "Alex" // 此時x是字符串
JavaScript不區分整型和浮點型,就只有一種數字類型。spa
var a = 12.34; var b = 20; var c = 123e5; // 12300000 var d = 123e-5; // 0.00123
還有一種NaN,表示不是一個數字(Not a Number)。3d
經常使用方法:指針
parseInt("123") // 返回123 parseInt("ABC") // 返回NaN,NaN屬性是表明非數字值的特殊值。該屬性用於指示某個值不是數字。 parseFloat("123.456") // 返回123.456
var a = "Hello" var b = "world; var c = a + b; console.log(c); // 獲得Helloworld
經常使用方法:code
//模板字符串(template string)是加強版的字符串,用反引號(`)標識。它能夠當作普通字符串使用,也能夠用來定義多行字符串,或者在字符串中嵌入變量 // 普通字符串 `這是普通字符串!` // 多行文本 `這是多行的 文本` // 字符串中嵌入變量 var name = "jason", time = "today"; `Hello ${name}, how are you ${time}?`
ps:若是模板字符串中須要使用反引號,則在其前面要用反斜槓轉義。
區別於python,true和false都是小寫
var a = true; var b = false;
""(空字符串)、0、null、undefined、NaN都是false。
null表示變量的值是空(null能夠手動清空一個變量的值,使得該變量變爲object類型,值爲null),undefined則表示只聲明瞭變量,但尚未賦值
總結:拿廁所裏的衛生紙來講,null就是用完了,而undefined則是放都沒放
JavaScript 中的全部事物都是對象:字符串、數值、數組、函數...此外,JavaScript 容許自定義對象。
JavaScript 提供多個內建對象,好比 String、Date、Array 等等。
對象只是帶有屬性和方法的特殊數據類型。
數組
數組對象的做用是:使用單獨的變量名來存儲一系列的值。相似於Python中的列表。
var a = [123, "ABC"]; console.log(a[1]); // 輸出"ABC"
經常使用方法:
ps:
語法:
forEach(function(currentValue, index, arr), thisValue)
語法解析:
function(currentValue, index, arr)
語法:
splice(index,howmany,item1,.....,itemX)
map()
同Python中的map使用
數組函數的調用方法
數組對象.函數名(function(參1,參2,參3){代碼體})
+ - * / % ++ -- var x=10; var res1=x++; var res2=++x; res1; res2; 這裏因爲的x++和++x在出現賦值運算式,x++會先賦值再進行自增1運算,而++x會先進行自增運算再賦值!
> >= < <= != == === !==
1 == 「1」 // true 弱等於 1 === "1" // false 強等於 //上面這張狀況出現的緣由在於JS是一門弱類型語言(會自動轉換數據類型),因此當你用兩個等號進行比較時,JS內部會自動先將 //數值類型的1轉換成字符串類型的1再進行比較,因此咱們之後寫JS涉及到比較時儘可能用三等號來強制限制類型,防止判斷錯誤
&& || !
= += -= *= /=
是一種對應關係
var day = 1; switch (day) { case 0: console.log("Sunday"); break; case 1: console.log("Monday"); break; default: console.log("...") }
switch中的case子句一般都會加break語句,不然程序會繼續執行後續case中的語句。
for (var i=0;i<10;i++) { console.log(i); }
var i = 0; while (i < 10) { console.log(i); i++; }
var a = 1; var b = 2; var c = a > b ? a : b //這裏的三元運算順序是先寫判斷條件a>b再寫條件成立返回的值是冒號前面的a,條件不成立返回的值是冒號後面的b;三元運算能夠嵌套使用; var a=10,b=20; var x=a>b ?a:(b=="20")?a:b; x 10
JavaScript中的函數和Python中的很是相似,只是定義方式有點區別。
// 普通函數定義 function f1() { console.log("Hello world!"); } // 帶參數的函數 function f2(a, b) { console.log(arguments); // 內置的arguments對象,arguments能夠拿到你傳的全部參數 console.log(arguments.length); console.log(a, b); } // 帶返回值的函數 function sum(a, b){ return a + b; } sum(1, 2); // 調用函數 // 匿名函數方式 var sum = function(a, b){ return a + b; } sum(1, 2); // 當即執行函數 書寫當即執行的函數,首先先寫兩個括號()()這樣防止書寫混亂 (function(a, b){ return a + b; })(1, 2);
ES6中容許使用「箭頭」(=>)定義函數。
var f = v => v; // 等同於 var f = function(v){ return v; }
var f = () => 5; // 等同於 var f = function(){return 5}; var sum = (num1, num2) => num1 + num2; // 等同於 var sum = function(num1, num2){ return num1 + num2; //這裏的return只能返回一個值,若是想返回多個值須要本身手動給他們包一個數組或對象中 }
function add(a,b){ console.log(a+b); console.log(arguments.length); console.log(arguments[0]);//arguments至關於將出傳入的參數所有包含,這裏取得就是第一個元素1 } add(1,2)
ps:函數只能返回一個值,若是要返回多個值,只能將其放在數組或對象中返回。
局部變量:
在JavaScript函數內部聲明的變量(使用 var)是局部變量,因此只能在函數內部訪問它(該變量的做用域是函數內部)。只要函數運行完畢,本地變量就會被刪除。
全局變量:
在函數外聲明的變量是全局變量,網頁上的全部腳本和函數都能訪問它。
變量生存週期:
JavaScript變量的生命期從它們被聲明的時間開始。
局部變量會在函數運行之後被刪除。
全局變量會在頁面關閉後被刪除。
首先在函數內部查找變量,找不到則到外層函數查找,逐步找到最外層。與python做用域關係查找如出一轍!
幾個例子:
var city = "BeiJing"; function f() { var city = "ShangHai"; function inner(){ var city = "ShenZhen"; console.log(city); } inner(); } f(); //輸出結果是? //ShenZhen var city = "BeiJing"; function Bar() { console.log(city); } function f() { var city = "ShangHai"; return Bar; } var ret = f(); ret(); // 打印結果是? //BeiJing var city = "BeiJing"; function f(){ var city = "ShangHai"; function inner(){ console.log(city); } return inner; } var ret = f(); ret(); // ShangHai
JavaScript中的全部事物都是對象:字符串、數字、數組、日期,等等。在JavaScript中,對象是擁有屬性和方法的數據。
注意var s1 = "abc"和var s2 = new String("abc")的區別:typeof s1 --> string而 typeof s2 --> Object
JavaScript的對象(Object)本質上是鍵值對的集合(Hash結構),可是隻能用字符串做爲鍵。
var a = {"name": "Alex", "age": 18}; console.log(a.name); console.log(a["age"]);
遍歷對象中的內容:
var a = {"name": "Alex", "age": 18}; for (var i in a){ console.log(i, a[i]); }
建立對象:
var person=new Object(); // 建立一個person對象 person.name="Alex"; // person對象的name屬性 person.age=18; // person對象的age屬性
建立Date對象
//方法1:不指定參數 var d1 = new Date(); console.log(d1.toLocaleString()); //方法2:參數爲日期字符串 var d2 = new Date("2004/3/20 11:12"); console.log(d2.toLocaleString()); var d3 = new Date("04/03/20 11:12"); console.log(d3.toLocaleString()); //方法3:參數爲毫秒數 var d3 = new Date(5000); console.log(d3.toLocaleString()); console.log(d3.toUTCString()); //方法4:參數爲年月日小時分鐘秒毫秒 var d4 = new Date(2004,2,20,11,12,0,300); console.log(d4.toLocaleString()); //毫秒並不直接顯示
Date對象的方法:
var d = new Date(); //getDate() 獲取日 //getDay () 獲取星期 //getMonth () 獲取月(0-11) //getFullYear () 獲取完全年份 //getYear () 獲取年 //getHours () 獲取小時 //getMinutes () 獲取分鐘 //getSeconds () 獲取秒 //getMilliseconds () 獲取毫秒 //getTime () 返回累計毫秒數(從1970/1/1午夜)
var str1 = '{"name": "Alex", "age": 18}'; var obj1 = {"name": "Alex", "age": 18}; // JSON字符串轉換成對象 var obj = JSON.parse(str1); // 對象轉換成JSON字符串 var str = JSON.stringify(obj1);
// 定義正則表達式兩種方式 var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}"); var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/; // 正則校驗數據 reg1.test('jason666') reg2.test('jason666') /*第一個注意事項,正則表達式中不能有空格*/ // 全局匹配 var s1 = 'egondsb dsb dsb'; s1.match(/s/) s1.match(/s/g) var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g reg2.test('egondsb'); reg2.test('egondsb'); reg2.lastIndex; /*第二個注意事項,全局匹配時有一個lastIndex屬性*/ // 校驗時不傳參數 var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/ reg2.test(); reg2.test(undefined); var reg3 = /undefined/; reg3.test(); RegExp
緣由:第一次匹配時指針移到最後,第二次匹配時指針由於已經移到最後了匹配不到東西,返回False,而後指針回到起始位置,第三次就又能夠從頭開始匹配,後續和前面三次的同樣。
abs(x) 返回數的絕對值。 exp(x) 返回 e 的指數。 floor(x) 對數進行下舍入。 log(x) 返回數的天然對數(底爲e)。 max(x,y) 返回 x 和 y 中的最高值。 min(x,y) 返回 x 和 y 中的最低值。 pow(x,y) 返回 x 的 y 次冪。 random() 返回 0 ~ 1 之間的隨機數。 round(x) 把數四捨五入爲最接近的整數。 sin(x) 返回數的正弦。 sqrt(x) 返回數的平方根。 tan(x) 返回角的正切