JavaScript學習筆記

1.字符串的不可變性理解

舉個栗子:
在這裏插入圖片描述

  • ECMAScript 中的字符串是不可變的,也就是說,字符串一旦創建,它們的值就不能改變。
  • 所謂的不可變性 指的是內存中的不可變性
  • 由於字符串的不可變性,大量拼接字符串非常消耗內存,如下:
 var str = "123";
 for (var i = 0; i < 1000000; i++) {
     str += "1";
 }

在這裏插入圖片描述

2.其他類型轉換成Boolean類型

數據類型 轉換成true的值 轉換成false的值
Boolean ture false
String 任何非空字符串 “”(空字符串)
Number 任何非零數字值(包括無窮大) 0和NaN
Object 任何對象 null

• 流程控制語句可以將其他類型轉換成Boolean類型
– 例如:

var message = "hello";
//這在開發中很頻繁用到
if(message) {  alert(message + " world")  }

• Boolean()函數
– 例如:
var b = Boolean(“123”); //返回true

3.其他類型轉換成字符串

三種轉換成字符串類型的方法

  1. toString()
var age = 18;
var ageString = age.toString();
console.log(ageString);  // 結果 "18"

var result = true;
var resultString = result.toString();
console.log(resultString);// 結果 "true"

  1. String()函數
var age = 18;
console.log(String(age)); //結果 "18"
var result = true;
console.log(String(result)); //結果 "true"
console.log(String(undefined)); //結果 "undefined"

• String()函數存在的意義:有些值沒有toString(),這個時候可以使用String()。比如:undefined和null

  1. 使用字符串拼接
var age = 18;
var str = age + "歲";
console.log(str);
var str = "" + 18; //結果是"18"

4.其他類型轉換成數值型

三個把值轉換成數值類型的函數:Number()、 parseInt()、 parseFloat()

  1. Number()可以把任意值轉換成數值,如果要轉換的字符串中有一個不是數值的字符,返回NaN
var num1 = Number(true); //true返回1  false返回0
var num2 = Number(undefined); //返回NaN
var num3 = Number("hello");  //返回NaN
var num4 = Number(""); //如果是空字符串返回0
var num5 = Number(123); //返回123,如果是數字,簡單返回
var num6 = Number("123abc");  //NaN
var num7 = Number("abc123");  //NaN
  1. parseInt()專門用於把字符串轉換成整數
var num1 = parseInt("12.3abc");  //返回12,如果第一個字符是數字會解析知道遇到非數字結束
var num2 = parseInt("abc123");  //返回NaN,如果第一個字符不是數字或者符號就返回NaN
  1. parseFloat()把字符串轉換成浮點數
    – parseFloat()和parseInt非常相似,不同之處在與
    • parseFloat會解析第一個. 遇到第二個.或者非數字結束,如22.34.5//22.34
    • parseFloat如果解析的內容裏只有整數,解析成整數
  2. 使用運算符
    • 使用減乘除(加是拼接字符串)都可以
    • 值-0 不會使原數值發生改變

5.運算符的優先級

---------------------------------------- 優先級從高到底

1.() 優先級最高
2. 一元運算符 ++ – !
3. 算數運算符 先* / % 後 + -
4. 關係運算符 > >= < <=
5. 相等運算符 == != === !==
6. 邏輯運算符 先&& 後||

6.三元(目)運算符


//性別在數據庫中存儲的是1和0,要求輸出男或女
var sex = 1;
if(sex === 1) {
	console.log("女");
}else{
 	console.log("男");
}
//簡化的方式
var  sex = 1;
sex = sex === 1 ? "女":"男";
//表達式1 ? 表達式2 : 表達式3

7.訪問對象屬性的兩種方式

  1. obj.age = 18;
  2. obj[“age”] = 18;
    for (var i = 0; i < 5; i++) {
        obj["n" + i] = i;//這種情況使用obj.xxx就無法實現了
    }

8.for循環的兩種方式

	var arr = [1, 2, 3, 4, 5];
	//最基本的一種方式了
    for (var i = 0; i < arr.length; i++) {
        console.log(arr[i]);
    }

    //for(var 鍵 in 要遍歷的對象){}
    for (var key in arr) {
        //console.log(key);
        //console.log(arr[key]);
    }

    var obj = {
        name: "zs",
        age: 18,
        sex: 0
    };

    for (var k in obj) {
        //console.log(k);
        console.log(obj[k]);
    }

9.基本類型做參數的結果

 //基本類型做參數
 var num = 50;
 function f1(num) { //此處的num是形參
     num = 60; //方法的參數是局部變量
     console.log(num);//60
 }
 f1(num);//此處的num是實參 會把num的值賦值一份傳遞給函數內部
 console.log(num);//50

9.引用類型做參數的結果

//引用類型做參數
    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    function f1(p) {
        p.name = "ls";
        console.log(p.name);//ls
    }
    var p1 = new Person("zs", 18);
    console.log(p1.name);//zs
    f1(p1);
    console.log(p1.name);//ls

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章