script


javaScipt

javaScript是一門世界上最流行的腳本語言。

1、快速入門

1.1 引入javaSciprt

  1. 內部標簽
  2. 外部引用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--    外部引用
        注意<script>必須成對出現,不能自閉合
-->
    <script src="js/qj.js"></script>
<!--    <script>-->
<!--        alert("hello world");/* 彈窗*/-->
<!--    </script>-->
</head>
<body>

</body>
</html>

1.2基本語法入門

  • 語法和java基本一致,甚至沒有java嚴格,但是和java一樣嚴格區分大小寫

  • console.log()在瀏覽器的控制台打印變量
    

1.3數據類型

變量都是用var

  • ===絕對等於(類型一樣,值一樣,結果謂true)
  • nan===nan,這個與所有的數值都不相等,包括自己。只能通過is(NAN)來判斷這個數是不是NAN

浮點數問題:

console.log((1/3===(1-2/3)))

盡量避免使用浮點數進行運算,存在精度問題,可以通過下面這個運算,來得到兩個值是不是幾乎相等

  • Math.log((1/3===(1-2/3))<0.0000000001
    

null和undefined

  • null 空
  • indeflined未定義

數組:

  • java的數組必須是同類型的對象,而在js中,var已經包括了所有的類型,所有不用必須同類型對象。
  • 如果在顯示數組的時候,java中顯示數組下標越界的錯誤時,在js上則現實的是indefined

對象:

  • 對象是大括號,數組是中括號
  • 每個屬性之間適用逗號隔開,最后一個不需要添加

1.4嚴格檢查模式strict

  • 如果下面這個strict語法報錯,則因為idea沒有選到es6版本

  • "use strict"寫到最前面一行
    
  • let局部變量

2、數據類型

2.1字符串

1、正常的字符串我們使用單引號,或者雙引號包裹

2、注意轉義字符

3、多行字符串編寫````

4、模板字符串

let mag = `你好:,${name}`

5、字符串長度

str.length

6、字符串的可變性,不可變

7、大小寫轉換

//注意這里是方法,不是屬性
student.toUpperCase
student.toLowerCase

8、student.indexOf()

9、subbstring():從第一個字符串截取到最后一個,包含前面,不包含后面

2.2數組

Array可以包含任意數據類型

1、長度 .length

注意:加入給Array賦值,數組大小就會發生變化,如果賦值過小,元素就會丟失

2、indexOf通過獲得下表索引

字符串的1和數字1是不同的

3、slice()截取數組的Array的一部分,返回一個新的數組,類似於String中的substring

4、push():壓入到尾部

pop():彈出尾部的一個元素

5、unshif();頭部

shift();

6、排序sort()

7、元素反轉reverse

8、concat():返回一個新數組,不改變原來數組

9、連接符join

打印拼接數組使用特定的字符串鏈接

10、多維數組

2.3對象

  • 若干個鍵值對
var person{
  name: "dawdaw",
  age:12,
  score:11
}
  • js中的對象,{...}表示一個對象,鍵值對描述屬性,多個屬性之間使用,隔開,最后一個屬性不加逗號。
  • javascript中的所有的鍵都是字符鍵,值是任意對象

1、對象賦值

2、使用一個不存在的對象屬性不會報錯,會返回undefind

3、動態的刪減屬性:通過delete刪除對象的屬性

4、動態的添加,直接給新的屬性添加至即可

5、判斷屬性值是否在這個對象中xxxinxxx

6、判斷一個屬性是否是這個對象自身擁有的hasOwnPropetty()

2.4、流程控制

if判斷

let age= 3;
if(age>3){
    alert("haha")
}else if(a<5){
  alert("kuwaawdwa")
}else {
    alert("kuwa")
}

while循環,避免程序死循環

while (age<100){
    age++;
    console.log(age)
}
do{
  age = age+1;
  console.log(age)
}while

for循環

for (let i = 0; i < 100; i++) {
    console.log(i);
}

foreach

var  age = [1,2,3,4,3,2,3,2,3,4,3];
age.forEach(function (value){
    console.log(value)
})

2.5、Map和Set

Map:

let map = new Map([['ton',100],['dwad',20],['fese',90]]);
let name = map.get('ton');//通過key獲得value
map.set("a",22)
console.log(map);
map.delest(“tom”)

Set:無需不重復的集合

set.add(2);
set.delete(1);
console.log(set.has(3));//是否包含某個元素

2.6、iterator

遍歷數組、Map和Set

'use strict'
var arr=[3,4,5];
for(var x of arr){
    console.log(x);
}
var arry = new Map([["DAW",12],["FAF",10],["FAWF",33]]);
for (let i of arry) {
    console.log(i);
}
var arr1 = new Set([5,6,7]);
for (let x of arr1){
    console.log(x)
}

3、函數

3.1、定義函數

絕對值函數

function abs(x){
       if (x>=0){
           return x;
       }else{
           return  -x;
       }
}

一旦執行到return代表函數結束,返回結果

如果沒有執行return,函數執行完也會返回結果,結果就是undefined

方式二

var abs = function (X) {
  
}

function (X) {...}這是一個匿名函數,但是可以把結果賦值給abs,通過abs就可以調用函數

參數問題:javascript可以傳任意個參數,也可以不傳遞參數。

arguments是一個js免費贈送的關鍵字;

代表:傳進來的所有參數,是一個數組

function abs(x){
    console.log("x>=" + x);

    for (let i = 0; i < arguments.length; i++) {
         console.log(arguments[i]);
    }
  
       // if (arguments.length>1){
       //     arguments[1]
       // }
       if (x>=0){
           return x;
       }else {
           return -x;
       }
}

rest新特性:獲取除了已經定義的參數之外的所有參數

4.2、變量的作用域

  • 在javascript中,var定義的變量實際是有作用域的。

假設在函數體重聲明,則在函數體外不可以使用。(非要實現的話,后期可以研究一下 閉包)

function qj(){
  var x = 1;
  x = x + 1;
}
x = x + 2;//ReferenceError: Can't find variable: x
  • 如果兩個函數使用了相同的變量名,只要在函數內部,就不沖突。
  • 內部函數可以訪問外部函數的成員。而外部函數不能訪問內部函數的成員。
  • 假設內部函數變量截外部函數重名,函數值查找變量會從自身函數開始向外查找,選擇最近的一個賦值

提升變量的作用域:js的執行引擎,自動提升了y的聲明,但是不會提升t的賦值。

  • 比如:x = ’x‘ + y
    • y = ’y‘ 結果是:xundefined y是存在的,但是沒有值
    • 這個是在js建立之初就存在的特性,養成規范:所有的變量定義都放在函數的頭部,不要亂放,編譯代碼維護。

全局函數:

var x = 1;
function qj() {
  console.log(x);
}
qj();
console.log(x);

全局對象 window

var x = 'xxx';
alert.x;
alert(window.x);//默認所有的全局變量,都會自動綁定在window對象

alert這個函數本身也是一個window變量:window.alert

js實際上只有一個全局作用域,任何變量(函數也可以視為變量),假設沒有在函數作用范圍內找到,就會向外查找,如果在全局作用域都沒有找到,會寶座RefrenceRrror

規范:

  • 由於我們所有的全局變量都會綁定在window上,如果不同的js文件使用了相同的全局變量,就會沖突

  • //唯一的全局變量
    var Xiao = {};
    Xiao.name = "等等";
    Xiao.add = function (a,b){
      return a+b;
    }
    

    把自己的代碼全部放入自己定義的唯一空間名字中,降低全局名沖突問題。

jQuery:等價於$();

局部作用域let

function aaa(){
  for (Var i = 0; i < 100; i++) {
    console.log(i)
  }
  console.log(i+1);//問題:出了這個作用域還可以使用
}

ES6 let關鍵字。解決局部作用域沖突

function aaa(){
  for (let i = 0; i < 100; i++) {
    console.log(i)
  }
  console.log(i+1);//問題:出了這個作用域還可以使用
}

建議使用let

常量const:

在ES6之前,怎么定義常量:只有用全部大寫字母命名的變量就是常量:建議不要修改這樣的值。

var F1 = '3.14'
console.log(F1);
F1 = '11'
console.log(F1);//可以改變

在ES6引用了常量關鍵字const

const PI = '3.14';//只讀變量
console.log(PI);
PI = '233'//這行是錯誤的
console.log(PI);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 script Pascal Script Script Form ">