JavaScript基础二
一、流程控制
1. if ... else
var age = 20;
if (age > 18) {
console.log('ok')
}else {
console.log('back')
}
2.if ... else if ... else
var age = 30;
if (age < 18){
console.log('未成年')
}else if (age > 60){
console.log('退休')
}else {
console.log('上班')
}
3.switch
一定要加break,否則繼續往下執行
var day = 3;
switch (day) {
case 1:
console.log('星期一');
break;
case 2:
console.log('星期二');
break;
case 3:
console.log('星期三');
break;
default :
console.log('周末');
}
4.for循環
① for(var i=0;i<10;i++) {循環體}
for (var i=0;i<10;i++){
console.log(i)
}
② 死循環
for (;;){
console.log(1)
}
5.while循環
while (條件) {循環體中要修改條件}
var n = 10;
while (n >10) {
console.log(n);
n--
}
6.三元運算
多用于賦值,對變量值做操作
// 三元運算 var x = 100; var y = 10; var a = x > y ? x:y
二、函數
1.普通函數
function func(x,y) {
return x+y
}
特點:① 多傳參數、少傳參數和不傳參數都不會報錯,沒有傳值相當于傳了undefined
② 少傳參數會返回NaN
③ 返回值是多個時,不會報錯,但默認返回最后一個
④ 需要返回多個值時,把返回值放在數組中
2.匿名函數:多用于和其他的函數/方法搭配使用,也用于回調函數中
function (x,y) {
return x+y
}
var foo = function (x,y) {
return x+y
};
var ret1 = foo(10,20);
console.log(ret1);
3.ES6新特性,箭頭函數
箭頭函數時匿名函數的簡寫
var f = x , y => x+y
等同于
var f = function(x,y) {
return x+y
}
3.立即執行函數:一頁面使用兩個JS文件,一個JS定義變量,另一個JS打印變量;解決方法:函數的局部變量在外部是不能使用的
JS中沒有模塊的概念,多通過立即中子星函數實行變量的私有
// 立即執行函數
(function(a,b){
console.log('自執行函數');
console.log(x+y);
})(111,222);
4.函數中的argu傳入參數的個數
function add(a,b,c){
console.log(a+b+c);
console.log(arguments.length)
}
add(1,2,3,4,5,6)
6
6
5.函數的全局變量和局部變量
局部變量:
在JavaScript函數內部聲明的變量(使用 var)是局部變量,所以只能在函數內部訪問它(該變量的作用域是函數內部)。只要函數運行完畢,本地變量就會被刪除。
全局變量:
在函數外聲明的變量是全局變量,網頁上的所有腳本和函數都能訪問它。
變量生存周期:
JavaScript變量的生命期從它們被聲明的時間開始。
局部變量會在函數運行以后被刪除。
全局變量會在頁面關閉后被刪除。
6.作用域
首先在函數內部查找變量,找不到則到外層函數查找,逐步找到最外層。
7.詞法分析
JavaScript中在調用函數的那一瞬間,會先進行詞法分析。
詞法分析的過程:
當函數調用的前一瞬間,會先形成一個激活對象:Avtive Object(AO),并會分析以下3個方面:
1:函數參數,如果有,則將此參數賦值給AO,且值為undefined。如果沒有,則不做任何操作。
2:函數局部變量,如果AO上有同名的值,則不做任何操作。如果沒有,則將此變量賦值給AO,并且值為undefined。
3:函數聲明,如果AO上有,則會將AO上的對象覆蓋。如果沒有,則不做任何操作。
函數內部無論是使用參數還是使用局部變量都到AO上找。
三、內置對象和方法
JavaScript中一切皆對象
面向對象,ES5中沒有類的概念。
創建對象用new關鍵字,實例化對象。
或者使用構造函數創建對象,首字母大寫。
// 創建新的對象
var name = new String('xiaoming');
// JS面向對象(構造方法)
function Person(name) {
this.name = name
}
var p1 = new Person('xiaobai');
JavaScript中使用原型鏈的方法
// 給對象統一的方法
Person.prototype.dream = function () {
console.log(this.name + 'good')
};
p1.dream();
四、Date對象
創建對象可傳入參數:日期字符串、毫秒數
// Date對象 var today = new Date(); //轉化為字符串 today.toLocaleString();
Date對象的方法 var d = new Date(); //getDate() 獲取日 //getDay () 獲取星期 //getMonth () 獲取月(0-11) //getFullYear () 獲取完整年份 //getHours () 獲取小時 //getMinutes () 獲取分鐘 //getSeconds () 獲取秒 //getMilliseconds () 獲取毫秒 //getTime () 返回累計毫秒數(從1970/1/1午夜)
五、JSON對象
不用new,直接使用方法
JSON.parse() 字符串 --> JS的數據類型
JSON.stringify JS的數據類型 --> 字符串
var str1 = '{'name':'xiaoming'}';
var obj1 = {"name":"xiaoming"};
//JSON將字符串轉化為對象
var obj = JSON.parse(str1);
//JSON將對象轉化為字符串
var str = JSON.stringify(obj1);
六、RegExp對象
正則表達式對象,兩種創建方式
① new RegExp(正則表達式)
// 檢驗手機號
var s1 = '13812341234';
// 創建正則表達式對象
var r1 = new RegExp('^1[3-9][0-9]{9}$');
// 驗證判斷,返回布爾值
r1.test(s1)
② 簡寫正則表達式
/正則表達式/
// 檢驗手機號
var s1 = '13812341234';
// 簡寫正則表達式
/^1[3-9][0-9]{9}$/.test(s1);
注意:
① test不傳值,相當于傳了undefined,內部當做'undefined'處理
② JS的正則表達式里不能寫空格
③ 兩個匹配模式
g:全局匹配,附帶lastIndex屬性,會記錄下一次匹配的開始位置,一旦返回False則會將lastIndex清0
i:忽略大小寫模式
七、Math對象
不用new,直接使用方法
相關方法: 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基础二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老子《道德经》第三十五章
- 下一篇: 拉钩网的起薪