天天看點

複習 - js基礎文法

今天繼續複習了js基礎文法 最後一天了 學完了進入dom bom的複習 今天發現了很多經典案例 我都不知道一個随筆放的完不 邏輯性感覺還是蠻強的 主要就是作用域 對象 内置對象等一些的操作嘛 話不多說直接上代碼 都在代碼裡了哈哈

首先是一個關于預解析的問題 感覺在這裡有點小坑 以後要注意了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 請描述下面代碼的輸出結果以及運作原因
        var num = 1; 
        function demo(){
            console.log(num); 
            function demoSon(){ 
                console.log(num); 
                num = 3; 
                console.log(num);} 
            var num = 2 
            demoSon();} 
        demo();

        // 很明顯這是一個關于預解析的問題 就是會把變量聲明和函數聲明提升到目前作用域的最前面 那麼全局作用域下聲明了一個num 函數也聲明了 在看函數裡面的
        // 注意!!! 這裡第一步我就錯了 我以為會列印1出來 局部作用域下先是列印num值 這裡遵循一個作用域鍊的原則一級一級往上查找 找最近的一個找到過後
        // 無論是否有值那都是他了 是以這裡有個變量提升 提上來後未指派 是以第一個num列印出來是undefined 後面繼續遵循原則 依次列印出 2 3
    </script>
</body>
</html>      

然後是一個函數内置對象混用的問題 遇到的第一個有點挑戰性的題

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*  函數名:getResult 函數調用方式:getResult(數值1,數值2,數值3,數值4.....) 函數功能:傳回值是一個對象,這個對象有sum, max, min, averages等屬性,分别表示實參的總和、最大值、最小值、平均數等 */
        function getResult() {
            var sum = 0,
            max = arguments[0],
            min = arguments[0],
            averages = 0
            for (k in arguments) {
                sum += arguments[k]
                if (arguments[k] > max) {
                    max = arguments[k]
                } else if (arguments[k] < min){
                    min = arguments[k]
                }
            }
            averages = sum / arguments.length
            return {
                sum : sum,
                max : max,
                min : min,
                averages : averages
            }
        }
        console.log(getResult(1, 3, 10, 5));
        // 我覺得這個題有點挑戰
    </script>
</body>
</html>      
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 以下有兩個數組,一個數組arr是班級裡所有的學員的名稱,一個數組currentArr是送出了每日回報的學員名單,請建立一種算法,把未送出每日回報的學員篩選出來 */
        var arr = ["張瑞淑", "徐海濤", "謝崗崗", "薛鵬", "魏明楊", "黨婷", "熊飛", "鄭翠翠", "李航衛", "屈濤", "汪孝雙", "代攀飛", "武志钰", "王亞龍", "周芙榕", "李濤", "郝穎", "文沖洋", "王旭拯", "胡佳豪", "寇曉麗", "馬曉晗","王思聰", "張綠", "李德", "鄭萍", "張凱", "張嘉成", "葛雲俠", "楊磊", "任變", "景德", "高卷林", "劉益凡", "趙娜", "陳章鳴", "張榮召", "趙凱旋", "程倩倩", "脫朝平", "劉吉利", "郭苗苗", "馬建峰", "潘瑞", "闫翔", "馬晨", "李軒軒", "黃紅梅", "劉書彬", "羅強", "劉東","王可可" ,"陳澤文", "李嘉琪", "段佳琦", "黃燕", "邱淑鴻", "宋翔宇", "王波", "樊琳", "王兆國", "許成", "李興"];
        var currentArr = ["張瑞淑", "徐海濤", "謝崗崗", "薛鵬", "魏明楊", "黨婷", "熊飛", "鄭翠翠", "李航衛", "屈濤", "汪孝雙", "代攀飛", "武志钰", "王亞龍", "周芙榕", "李濤", "郝穎", "文沖洋", "王旭拯", "胡佳豪", "寇曉麗", "馬曉晗", "張綠", "李德","鄭萍", "張凱", "張嘉成", "葛雲俠", "楊磊", "任變", "景德", "高卷林", "劉益凡", "趙娜", "陳章鳴", "張榮召", "趙凱旋", "程倩倩", "脫朝平", "劉吉利", "郭苗苗", "馬建峰", "潘瑞", "闫翔", "馬晨", "李軒軒", "黃紅梅", "劉書彬", "羅強", "劉東", "陳澤文", "李嘉琪", "段佳琦", "黃燕", "邱淑鴻", "宋翔宇", "王波", "樊琳", "王兆國", "許成", "李興"];
        var newArr = []
        for (var i = 0; i < arr.length; i++) {
            if (flag) {
                newArr[newArr.length] = arr[i - 1]
            }
            var flag =  true
            for (k in currentArr) {
                if (currentArr[k] === arr[i]) {
                    flag = false
                    break
                }
            }
        }
        console.log(newArr);

        // 這個題真的 很能看出些問題 我上一次做這個是想了一兩天硬是做不出來 這一次再一做也花了點時間 四十分鐘左右 但還好是做出來了 複習一次能看出我太太菜了 也變強了哈哈哈
    </script>
</body>
</html>      
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 字元串:“abaasdffggghhjjkkgfddsssss3444343”,問題如下:

1、 字元串的長度 2、 取出指定位置的字元,如:0,3,5,9等 3、 查找指定字元是否在以上字元串中存在,如:i,c ,b等 4、 替換指定的字元,如:g替換為22,ss替換為b等操作方法 5、 截取指定開始位置到結束位置的字元串,如:取得1-5的字元串 6、 找出以上字元串中出現次數最多的字元和出現的次數 7、 周遊字元串,并将周遊出的字元兩頭添加符号“@” */
        var str = 'abaasdffggghhjjkkgfddsssss3444343'
        // 1.
        console.log(str.length);
        // 2.
        console.log(str.charAt(0));
        console.log(str[3]);
        console.log(str.charCodeAt(5));
        // 3.
        function getExist(x, str) {
            var flag = false 
            for (var i = 0; i < str.length; i++) {
                if (str.charAt(i) == x) {
                    flag = true
                    break
                }
            }
            return flag
        }
        console.log(getExist('b', str));
        // 4.
        str = str.replace('g', '22')
        str = str.replace('ss', 'b')
        console.log(str);

        // 5.
        console.log(str.substr(0, 5));
        console.log(str.slice(0, 5));

        // 6.
        var max = 0
        var counts = 0
        var temp
        var newArr = str.split('')
        for (var i = 0; i < newArr.length; i++) {
            counts = 0
            for (var j = 1; j < newArr.length; j++) {
                if (newArr[i] == newArr[j]) {
                    counts++
                    newArr.splice(j,1)
                }
            }
            if (counts > max) {
                max = counts
                temp = newArr[i]
            }
        }
        console.log(temp, max);
        // 這個題 十分的有挑戰性 我感覺雖然做出來了 但代碼有點備援 但又找不到删減點
        // 7.
        var newStr = ''
        for (var i = 0; i < str.length; i++) {
            newStr += str.substr(i, 1)
            newStr += '@'
        }
        newStr = '@' + newStr
        console.log(newStr);
    </script>
</body>
</html>      
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 從以下學員名單中随機選出4個學員:

 var arr = ["鹿晗","王俊凱","蔡徐坤","彭于晏","周傑倫","劉德華","趙本山"];

 注意:不要有重複的學員 */
        var arr = ["鹿晗","王俊凱","蔡徐坤","彭于晏","周傑倫","劉德華","趙本山"]
        function getIntRandom(max, min) {
            min = Math.ceil(min)
            max = Math.floor(max)
            return Math.floor(Math.random() * (max - min + 1)) + min
        }
        var newArr = new Array()
        var x = 6
        for (var i = 0; i < 4; i++) {
            var temp = getIntRandom(0, x)
            newArr[newArr.length] = arr[temp]
            arr.splice(temp, 1)
            x--
        }
        console.log(newArr);
        // 這個題也是當初卡了我很久 現在一做就很快做出來了 複習還是有用的 盡快複習完 馬上進入新階段了
    </script>
</body>
</html>      

繼續閱讀