var a = 10; if (a > 5){ console.log("yes"); }else { console.log("no") }
var day = new Date() switch (day) { case 0: console.log("sunday") break; case 1: console.log("monday") break; default: console.log("...") } # 必須加break否則會一直向下執行無論default是否存在,default是指都不是才走
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
JavaScript中的函數和Python中的很是相似,只是定義方式有點區別。數組
//普通函數定義 function f1() { console.log("hello world"); } //帶參數的函數 function f2(a, b) { console.log(arguments); //內置的arguments對象 console.log(arguments.length); console.log(a, b) return a,b #1,2,3 } ret = f2(100,200) console.log(ret) #傳少了會返回一個NAN #傳多了只會接收最開始符合實參的參數 #返回多個值只會返回最後一個值會如上圖:只接收一個返回值,除非是列表其餘的對象中 #不傳也沒事返回一個NAN
帶返回值得函數
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; }
function add(a,b) { console.log(a+b); console.log(arguments.length) } add(1, 2)
局部變量:學習
在JavaScript函數內部聲明的變量(使用 var)是局部變量,因此只能在函數內部訪問它(該變量的做用域是函數內部)。只要函數運行完畢,本地變量就會被刪除。spa
全局變量:code
在函數外聲明的變量是全局變量,網頁上的全部腳本和函數都能訪問它。對象
變量生存週期:blog
JavaScript變量的生命期從它們被聲明的時間開始。ip
局部變量會在函數運行之後被刪除。ci
全局變量會在頁面關閉後被刪除。
首先在函數內部查找變量,找不到則到外層函數找,逐步找到最外層。
var city = "beijing"; function f() { var city = "shanhai"; function inner() { var city = "shenhen"; console.log(city); } inner(); } f();
var city = "beijing"; function Bar() { console.log(city); } function f() { var city = "ShangHai"; return Bar; } var ret = f(); ret(); // 打印結果是?
3.閉包
var city = "BeiJing"; function f(){ var city = "ShangHai"; function inner(){ console.log(city); } return inner; } var ret = f(); ret();
JavaScript中在調用函數的那一瞬間,會先進行詞法分析。
詞法分析的過程:
當函數調用的前一瞬間,會先造成一個激活對象:Avtive Object(AO),並會分析如下3個方面:
1:函數參數,若是有,則將此參數賦值給AO,且值爲undefined。若是沒有,則不作任何操做。
2:函數局部變量,若是AO上有同名的值,則不作任何操做。若是沒有,則將此變量賦值給AO,而且值爲undefined。
3:函數聲明,若是AO上有,則會將AO上的對象覆蓋。若是沒有,則不作任何操做。
函數內部不管是使用參數仍是使用局部變量都到AO上找。
看兩個例子:
var age = 18; function foo(){ console.log(age); var age = 22; console.log(age); } foo(); // 問:執行foo()以後的結果是?
var age = 18; function foo(){ console.log(age); var age = 22; console.log(age); function age(){ console.log("呵呵"); } console.log(age); } foo(); // 執行後的結果是?
JavaScript中的全部事物都是對象:字符串、數字、數組、日期,等等。在JavaScript中,對象是擁有屬性和方法的數據。
咱們在學習基本數據類型的時候已經帶你們瞭解了,JavaScript中的Number對象、String對象、Array對象等。
注意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屬性
注意: