1. 程式人生 > >前端開發之JavaScript

前端開發之JavaScript

exp abs cond width 數學 追加 eight defined 傳值

JavaScript

  JS是一種腳本語言,瀏覽器執行,用於渲染HTML網頁,實現網頁的動畫效果。

  JavaScript的引用方式:

    1,在HTML文件中script標簽中寫JS代碼

<script>
  // JS代碼
</script>

    2,引用外部的JS文件

<script src="my-JavaScript.js"></script>

  JavaScript的註釋和語句規範

// 單行註釋:
// var name = "tom";

/*多行註釋:*/

/*
var name = "tom";
var age = 18;
*/ // 每一句代碼要用分號;為結束

  JavaScript變量聲明

    變量聲明:var 變量名 = 數據;

var age = 18;

    變量名命名規則:

      1,變量名使用數字,字母,下劃線和$組成,但是不能以數字開頭;

      2,不能使用JS的保留字;

      3,駝峰式命名,見名知意。

  JavaScript的數據類型

    1,字符串string:

      引號包裹的為字符串類型。如 var s = "tom";

      字符串拼接使用+號,其他的常用方法有:

方法 說明
.length 返回長度
.trim() 移除空白
.trimLeft() 移除左邊的空白
.trimRight() 移除右邊的空白
.charAt(n) 返回第n個字符
.concat(value, ...) 拼接
.indexOf(substring, start) 子序列位置
.substring(from, to) 根據索引獲取子序列
.slice(start, end) 切片
.toLowerCase() 小寫
.toUpperCase() 大寫
.split(delimiter, limit) 分割

    2,數字number:

      JavaScript沒有整型和浮點型的區分,就是數字類型。如 var n = 2.3;

      數字還要一種比較特別的類型:NaN(Not a Number),表示不是一個是數字。當字符串和數字相加時會返回NaN。

      常用的方法:

parseInt("123")  // 返回123
parseInt("ABC")  // 返回NaN
parseFloat("3.1415926")  // 返回123.456

    3,undefined:

      JavaScript中一種特殊的類型,當一個變量只聲明而沒有賦值時,它的類型就是undefined。還有就是函數無明確的返回值時,返回的也是undefined。

var x;  // 此時x是undefined

    4,布爾值boolean:

      true和false。在JavaScript中,空字符串,數字0,null,undefined和NaN都是false,其他的為true。

    5,數組:

      形式類似python中列表。

var li = [123, "ABC"];

      常用方法:

方法 說明
.length 數組的大小
.push(ele) 尾部追加元素
.pop() 獲取尾部的元素
.unshift(ele) 頭部插入元素
.shift() 頭部移除元素
.slice(start, end) 切片
.reverse() 反轉
.join(seq) 將數組元素連接成字符串
.concat(val, ...) 連接數組
.sort() 排序

  JavaScript數據類型查看

    查看方式:typeof 數據。

// 返回string
typeof "abc" ;
// 返回number
typeof 12;

  JavaScript的運算符

    1,算數運算符:加+ 減- 乘* 除/ 取余% 自加++ 自減--

    2,比較運算符:大於> 大於等於>= 小於< 小於等於<= 弱不等於!= 弱等於== 等於=== 不等於!==

      弱等於只比較數值不看類型,如 1 == ‘‘1",它返回的是true。

    3,邏輯運算符:與 && 或|| 非!

    4,賦值運算符:=將數值賦值給前面的變量 +=變量加上數值後再賦值 -=變量減去數值後再賦值 *=變量乘以數值後再賦值 /=變量除以數值後再賦值

  JavaScript流程控制

    判斷

    1,if else:單一條件

var a = 10;
if (a > 5){
  條件成立時執行的代碼
}else {
  條件不成立時執行的代碼
}

    2,if else if else:多條件

var a = 10;
if (a > 5){
  條件一成立時執行的代碼
}else if (a < 5) {
  條件二成立時執行的代碼
}else {
  條件都不成立時執行的代碼
}

    3,switch:特定多條件

var day = 2;
switch (day) {  // 變量名
  case 0:   // 條件數值
  console.log("Sunday");  // 滿足條件執行的代碼
  break;  // 退出,確保不會執行下面的代碼
  case 1:
  console.log("Monday");
  break;
  default: 
  console.log("...")   // 都不滿足時執行的代碼
}

    循環

    1,for:

for (var i=0;i<10;i++) {    // 聲明變量i,設定條件,i自增
  console.log(i);
}

    2,while:

var i = 0;
while (i < 10) {  // 滿足條件進入循環
  console.log(i);
  i++;  // 自增,用於改變條件值來結束循環
}

    3,三元運算:

var a = 1;
var b = 2;
var c = a > b ? a : b  // 當a>b時,返回冒號之前的a,反之返回冒號之後的b

  JavaScript的函數

    1,函數的定義

function 函數名() {
  函數體
}

// 可以設置參數
function 函數名(參數1,參數2,......) {
  函數體
}

// 可以有返回值
function 函數名() {
  函數體
  return 返回值
}

    匿名函數

// 通過變量來接收
var func = function() {
  函數體
}

    2,函數的調用

function foo() {
  console.log(‘tom‘);
}

// 函數調用
foo()

// 立即執行函數,直接執行。
(function(a, b){
  return a + b;
})(1, 2);

    如果函數有參數,調用時傳的參數即使和形參數量不同,也不會報錯。為了避免這個問題,可以使用arguments,它會獲取傳的所有參數。通過判斷它的長度,我們就可以確定傳的參數是否滿足條件。

function add(a,b){
  console.log(a+b);
  console.log(arguments.length)
}

add(1,2,3)  // 輸出3  3

    3,函數的全局變量和局部變量

      1,全局變量:在全局定義的變量,所有都可以訪問它。

      2,局部變量:在函數內定義的變量,只有函數內部的能訪問它。當函數運行結束後就會清楚局部的變量。

    4,函數的作用域

      函數內部在找變量時,是從內向外找,逐步找到最外層。

    5,函數的詞法分析

      在JavaScript中調用函數會先進性詞法分析:

詞法分析的過程:

當函數調用的前一瞬間,會先形成一個激活對象:Avtive Object(AO),並會分析以下3個方面:

1:函數參數,如果有,則將此參數賦值給AO,且值為undefined。如果沒有,則不做任何操作。
2:函數局部變量,如果AO上有同名的值,則不做任何操作。如果沒有,則將此變量賦值給AO,並且值為undefined。
3:函數聲明,如果AO上有,則會將AO上的對象覆蓋。如果沒有,則不做任何操作。

函數內部無論是使用參數還是使用局部變量都到AO上找。

  JavaScript的對象和內置方法

    在JavaScript中一切皆對象。我們也可以自定義對象。

    1,自定義對象:

var a = {"name": "Alex", "age": 18}; // 自定義對象
console.log(a.name);  // 取值方式一
console.log(a["age"]);  // 取值方式二

    2,JavaScript語句創建對象:

var person=new Object();  // 創建對象
person.name="Alex";  // 給對象添加屬性和值
person.age=18;

    3,內置對象和方法:

      1,Date對象

var d1 = new Date(); // 創建Date對象
d1.getDate()  // 使用對象方法
技術分享圖片
getDate()    從 Date 對象返回一個月中的某一天 (1 ~ 31)。
getDay()    從 Date 對象返回一周中的某一天 (0 ~ 6)。
getFullYear()    從 Date 對象以四位數字返回年份。
getHours()    返回 Date 對象的小時 (0 ~ 23)。
getMilliseconds()    返回 Date 對象的毫秒(0 ~ 999)。
getMinutes()    返回 Date 對象的分鐘 (0 ~ 59)。
getMonth()    從 Date 對象返回月份 (0 ~ 11)。
getSeconds()    返回 Date 對象的秒數 (0 ~ 59)。
getTime()    返回 1970 年 1 月 1 日至今的毫秒數。
getTimezoneOffset()    返回本地時間與格林威治標準時間 (GMT) 的分鐘差。
getUTCDate()    根據世界時從 Date 對象返回月中的一天 (1 ~ 31)。
getUTCDay()    根據世界時從 Date 對象返回周中的一天 (0 ~ 6)。
getUTCFullYear()    根據世界時從 Date 對象返回四位數的年份。
getUTCHours()    根據世界時返回 Date 對象的小時 (0 ~ 23)。
getUTCMilliseconds()    根據世界時返回 Date 對象的毫秒(0 ~ 999)。
getUTCMinutes()    根據世界時返回 Date 對象的分鐘 (0 ~ 59)。
getUTCMonth()    根據世界時從 Date 對象返回月份 (0 ~ 11)。
getUTCSeconds()    根據世界時返回 Date 對象的秒鐘 (0 ~ 59)。
getYear()    已廢棄。 請使用 getFullYear() 方法代替。
parse()    返回1970年1月1日午夜到指定日期(字符串)的毫秒數。
setDate()    設置 Date 對象中月的某一天 (1 ~ 31)。
setFullYear()    設置 Date 對象中的年份(四位數字)。
setHours()    設置 Date 對象中的小時 (0 ~ 23)。
setMilliseconds()    設置 Date 對象中的毫秒 (0 ~ 999)。
setMinutes()    設置 Date 對象中的分鐘 (0 ~ 59)。
setMonth()    設置 Date 對象中月份 (0 ~ 11)。
setSeconds()    設置 Date 對象中的秒鐘 (0 ~ 59)。
setTime()    setTime() 方法以毫秒設置 Date 對象。
setUTCDate()    根據世界時設置 Date 對象中月份的一天 (1 ~ 31)。
setUTCFullYear()    根據世界時設置 Date 對象中的年份(四位數字)。
setUTCHours()    根據世界時設置 Date 對象中的小時 (0 ~ 23)。
setUTCMilliseconds()    根據世界時設置 Date 對象中的毫秒 (0 ~ 999)。
setUTCMinutes()    根據世界時設置 Date 對象中的分鐘 (0 ~ 59)。
setUTCMonth()    根據世界時設置 Date 對象中的月份 (0 ~ 11)。
setUTCSeconds()    setUTCSeconds() 方法用於根據世界時 (UTC) 設置指定時間的秒字段。
setYear()    已廢棄。請使用 setFullYear() 方法代替。
toDateString()    把 Date 對象的日期部分轉換為字符串。
toGMTString()    已廢棄。請使用 toUTCString() 方法代替。
toISOString()    使用 ISO 標準返回字符串的日期格式。
toJSON()    以 JSON 數據格式返回日期字符串。
toLocaleDateString()    根據本地時間格式,把 Date 對象的日期部分轉換為字符串。
toLocaleTimeString()    根據本地時間格式,把 Date 對象的時間部分轉換為字符串。
toLocaleString()    據本地時間格式,把 Date 對象轉換為字符串。
toString()    把 Date 對象轉換為字符串。
toTimeString()    把 Date 對象的時間部分轉換為字符串。
toUTCString()    根據世界時,把 Date 對象轉換為字符串。
UTC()    根據世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數。
valueOf()    返回 Date 對象的原始值。
Date內置方法

      2,JSON對象

        var obj = JSON.parse(字符串):將字符串轉換成對象;

        var str = JSON.stringify(對象):將對象轉換成字符串。

      3,RegExp對象

        JavaScript中正則相關的對象。

        1,正則定義的兩種方式:

var reObj1 = new RegExp("正則語句");
var reObj2 = /正則語句/

        2,常用的方法 :RegExp對象.test("將要被校驗的字符串")

        3,正則的匹配模式:

          1,g:全局匹配

          2,i:不區分大小寫

        4,註意事項:

1. 正則表達式之間不能加空格
2. .test()不傳值相當於.test(undefined)  --> .test("undefined")
3. 全局匹配模式註意事項
    var reObj = /abc/g;  -->按lastIndex的值進行匹配
    reObj.test("abc")    --> lastIndex屬性被設置成下一位的索引3
    reObj.test("123abc") -->從索引3開始匹配,能匹配上abc所以就返回true

      4,Math對象

        數學計算相關的對象。方法有:

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)      返回角的正切。

前端開發之JavaScript