文章目錄
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.其他類型轉換成字符串
三種轉換成字符串類型的方法
- toString()
var age = 18;
var ageString = age.toString();
console.log(ageString); // 結果 "18"
var result = true;
var resultString = result.toString();
console.log(resultString);// 結果 "true"
- 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
- 使用字符串拼接
var age = 18;
var str = age + "歲";
console.log(str);
var str = "" + 18; //結果是"18"
4.其他類型轉換成數值型
三個把值轉換成數值類型的函數:Number()、 parseInt()、 parseFloat()
- 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
- parseInt()專門用於把字符串轉換成整數
var num1 = parseInt("12.3abc"); //返回12,如果第一個字符是數字會解析知道遇到非數字結束
var num2 = parseInt("abc123"); //返回NaN,如果第一個字符不是數字或者符號就返回NaN
- parseFloat()把字符串轉換成浮點數
– parseFloat()和parseInt非常相似,不同之處在與
• parseFloat會解析第一個. 遇到第二個.或者非數字結束,如22.34.5//22.34
• parseFloat如果解析的內容裏只有整數,解析成整數 - 使用運算符
• 使用減乘除(加是拼接字符串)都可以
• 值-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.訪問對象屬性的兩種方式
- obj.age = 18;
- 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