day3-函數

来源:https://www.cnblogs.com/sml-ylz/archive/2023/11/28/17862265.html
-Advertisement-
Play Games

迴圈練習 1、列印100以內7的倍數 // 需要驗證的是1-100之間的數字 迴圈計數器正好可以表示 // i初始值設置為1 正好可以表示出需要驗證的數字 for (var i = 1; i <= 100; i++) { if (i % 7 == 0) { console.log(i) } } 2、 ...


迴圈練習

1、列印100以內7的倍數

// 需要驗證的是1-100之間的數字 迴圈計數器正好可以表示
// i初始值設置為1 正好可以表示出需要驗證的數字
for (var i = 1; i <= 100; i++) {
    if (i % 7 == 0) {
        console.log(i)
    }
}

2、計算1~100之間所有奇數的和

// 計算1~100之間所有奇數的和  先找出 每一個奇數 然後求和運算
        var sum = 0;
        for (var i = 1; i <= 100; i++) {
            if (i % 2 != 0) {
                sum+=i;
            }
        }

3、入職薪水10K,每年漲幅5%,第50年工資多少

// 入職薪水10K,每年漲幅5%,第50年工資多少
var money = 10000;
for (var i = 2; i <= 50; i++) {
    money = money * 1.05;
    console.log('第'+i+'年的薪資是:'+money)
}

4、計算1000~2000之間的閏年(每行四個,列印到頁面)

// 創建一個計數器 用於記錄是第幾個閏年
var index = 0;
// 計算1000~2000之間的閏年(每行四個,列印到頁面)
for (var year = 1000; year <= 2000; year++) {
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        document.write(year +' ')
        index++;//if條件滿足 說明找到了一個閏年 計數器需要增加
        if(index % 4 == 0){
            // 每四個
            document.write('<br/>')
        }

    }
}

5、計算水仙花數

 for (var num = 100; num <= 999; num++) {
            // 提取出數字中每一位數字
            // 百位數字
            var b = parseInt(num / 100);
            // 提取十位數字
            var s = parseInt((num - b * 100) / 10);
            // 提取個位數字
            var g = (num - b * 100) % 10;
            // b**次方數
            if (num == b ** 3 + s ** 3 + g ** 3) {
                console.log(num + '是水仙花數')
            }
        }

6、計算素數

// 計算素數
var num = 9;
// 素數是除了自己跟1之外的任何一個數都無法除盡
// 需要將當前這個數從2開始 一路除以到4 過程中 有一個數可以被除盡證明不是素數 否則就是素數
// 假設現在的這個數是一個素數 使用true表示
// var flag = true;
// for (var i = 2; i < num; i++) {
//     // 在迴圈的過程中if判斷會執行很多次
//     if (num % i == 0) {
//         flag = false;
//     }
// }
// // 迴圈結束 flag為false 說明 不是素數 如果 flag還是true 就說明前面沒有一次是可以除盡
// console.log(flag ? '素數' : '不是素數')

// js中兩個關鍵字 break continue;
// for(var i =0;i<10;i++){
//     if(i==4){
//         break;
//     }
//     console.log(i);
// }

// for (var i = 0; i < 10; i++) {
//     if (i == 4) {
//         continue;
//     }
//     console.log(i);
// }
// console.log('over')
// break整個迴圈退出 不管後面還有多少次迴圈沒有執行 
// continue是跳出當前這一次迴圈,後面還有迴圈需要執行的繼續
var flag = true;
for (var i = 2; i < num; i++) {
    // 在迴圈的過程中if判斷會執行很多次
    if (num % i == 0) {
        flag = false;
        break;
    }
    console.log('迴圈執行了')
}

7、九九剩法表

// 輸出9*9table標簽

// 1、輸出1個tr中存在9個td單元格
// var html = '<table><tr>';
// for (var i = 1; i <= 9; i++) {
//     html += '<td></td>';
// }
// html += '</tr></table>';
// document.write(html);

// 2、9個tr 每個tr中9個td
// 迴圈嵌套 外層迴圈執行一次 裡層迴圈執行n次
// 當j = 1的時候 裡層迴圈中i 會從1執行到9  j = 1  i = 1迴圈體代碼 i=2迴圈體代碼
// 當j = 1的時候 i需要 1
// 當j = 2的時候 i需要 1 2

var html = '<table border="1">';
for (var j = 1; j <= 9; j++) {
    html += '<tr>'
    for (var i = 1; i <= j; i++) {
        html += '<td>' + i + ' * ' + j + ' = ' + (i * j) + '</td>';
    }
    html += '</tr>';
}
html += '</table>';
document.write(html);

8、填數

var html = '<table>';
for (var i = 1; i <= 10; i++) {
    html += '<tr>'
    for (var j = 1; j <= 10; j++) {
        //(i-1)*10+j
        // i = 1 表示第一行  需要設置 1-10
        // j = 1  值為1
        // j = 2  值為2
        // 。。。
        // i = 2 表示第二行 需要設置 11-20
        // j = 1  值為11
        // j = 2  值為12
        // 。。。
        html += '<td>' + ((i - 1) * 10 + j) + '</td>'
    }
    html += '</tr>'
}

html += '<table>'
document.write(html)

初識數組

數組的作用

js中基本數據類型只能存儲一個值 存在弊端
例如現在需要編寫程式計算出所有同學的平均成績,所以需要記錄每一個同學額分數。可以每一個同學使用一個變數名稱表示,但是不方便。如果人數發生改變 需要修改代碼
所以需要使用數組結構。通過使用數組 可以存儲多份數據

數組的基本使用

1、創建數組

// 1、創建數組 
// 語法  var 變數名稱 = [元素1,元素2,....];  在創建數組中使用中括弧叫做字面量  具體存儲的每一個值叫做元素 元素沒有數據類型的約束,可以是任何一種數據類型 但是一般所有元素都是相同的數據類型
// 如果數組中沒有元素 叫做空數組 但是空數組轉換為布爾值是真
// var score = [];
var score = [80, 67, 90, 53];
console.log(score)

2、控制台查看的結果

1700635743683

3、訪問數組元素

// 2、訪問數組中元素
        // 語法:變數名稱[下標] 下標千萬不要越界
        console.log(score[6]); // undefined
        // 在獲取數據是 將下標保存到其他變數中通過 數組[下標變數]
        var index = 3;
        console.log(score[index]);

4、數組長度

// 3、數組長度
console.log(score.length);//這個是對象訪問屬性的語法
// score[length] 這個表示取出score數組中length變數保存的值的元素
// 獲取數組長度
// console.log(score['length'])
// 規律 數組最大下標=數組長度-1
console.log(score[score.length-1]);//獲取最後一個元素值

5、數組修改元素/追加元素

var arr = ['a','b']
// 修改語法  數組變數[下標]=值  如果存在下標就修改不存在下標就添加
arr[1] = 'c'
// 追加一個元素
arr[arr.length] = 'cc'
console.log(arr)

6、數組遍歷

// 5、數組遍歷(就是將數組中每一個元素取出使用  迴圈)
var sum = 0;
for (var i = 0; i < score.length; i++) {
    // 每次迴圈 i表示 0 1 2 ... 正好對應著數組的下標
    sum += score[i]
}
console.log(sum / score.length)

變數記憶體分佈

記憶體地址解釋

電腦中所有的功能都是CPU在進行計算,但是CPU沒有存儲數據的能力。所有運算都是由記憶體條中存儲的數據提供。
為了更好的使用記憶體管理數據,操作系統將記憶體劃分為多個區域。主要關心的是堆區與棧區。堆區與棧區空間依舊很大。所為了方便去管理,每個區域都繼續進行一個更小的劃分,每一個小區域都分配一個編號,編號就叫做記憶體地址。實際使用 可以使用十六進位的數
堆區:相對空間比較大 相對效率要低
棧區:相對空間小 相對效率要高

基本數據類型

1、示例代碼

//先創建i變數(在棧區開闢一個空間)  賦值時將變數的值存儲起來 
        var i = 10;
        // 先創建j變數 在棧區開闢一個空間 當執行j=i(賦值語句 永遠會將變數在棧區存儲的值進行賦值) 將i變數在棧區存儲的值拷貝一份 存儲到j變數的棧區
        var j = i;
        // i=20是一個賦值語句 將i變數在棧區存儲的值從10修改為20
        i = 20;
        // 取出j變數棧區的值 10
        console.log(j);//10

2、記憶體分佈圖

1700640622546

引用數據類型

1、示例代碼

// var arrr 先在棧區開闢一個空間,當執行arr=[1,2,3] 將數據保存到堆區 棧區中記錄數據在堆區的位置
        var arr = [1,2,3];
        // var newArr 在棧區開闢一個空間 當執行newArr = arr 將arr棧區存儲的值賦值給newArr 導致newArr與arr變數對應堆區的同一份數據
        var newArr = arr;
        // 根據arr在棧區記錄的地址到堆區中找到第一個值修改為100
        // arr[0] = 100;

        // console.log(newArr)
        // 此時的修改是直接賦值 會創建新的堆區空間記錄數據 最後將arr在棧區的值存儲為新的空間地址 導致 arr與newArr相互不影響
        arr = [3,4,5];

        console.log(newArr)

2、記憶體圖

1700641786007

結論:

​ 1、變數直接(變數=值)賦值永遠是修改棧區存儲的內容

​ 2、基本類型直接賦值之後 其中一個變數修改不影響另外一個變數

​ 3、引用類型直接賦值後。如果順著記憶體修改數據(arr[0]=100)兩個變數相互印象,如果是直接給其中一個變數賦值導致與;另外一個變數不共用數據 最終兩個變數獨立相互不影響

函數

函數的作用

目前寫的代碼是不能復用的 如果需要實現一模一樣的功能需要將代碼複製一份,導致代碼質量不高 並且不方便後期的維護
所以可以使用函數解決這個問題。函數的特點就是一次封裝 多次調用

函數的定義與調用

1、語法

1、創建語法
	聲明式函數:function 函數名稱([形參列表]){
        函數體代碼
        //可選的return語句  
    }
	賦值式函數:var 函數名稱 = function([形參列表]){
        函數體代碼
        //可選的return語句  
    } 
2、調用語法 函數名稱([實參列表])

2、使用示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 創建函數 函數創建不會將內部的代碼執行
        function fn(){
            console.log('100行代碼執行')
        }
        // 聲明式函數
        var fn2 = function(){
            console.log('聲明式函數')
        }
        // 調用函數
        fn();
        fn();
        fn();
        fn2();
        fn2();
    </script>
</body>
</html>

聲明式與賦值式的區別

1、同一個script標簽的情況

<!-- 函數創建與調用都在一個script標簽中 -->
    <script>
        // 1、在同一個script標簽中 聲明式函數 任何位置都可以調用
        // 2、在同一個script標簽中 賦值式的函數只能在函數之後調用
        fn();
        function fn(){
            console.log('聲明式函數');
        }
        fn();

        // fn3 is not defined 說明fn3不存在
        // fn3();
        // fn2 is not a function  說明fn2存在 但是只是不是一個函數而已
        fn2();
        var fn2 = function(){
            console.log('提莫')
        }

        fn2()


    </script>

2、不同的script標簽

<!-- 2、不同的script標簽中 -->
    <script>
        // fn3();
        // fn4();
    </script>

    <script>
        var fn3 = function(){
            console.log('蓋倫');
        }

        function fn4(){
            console.log('亞索');
        }
    </script>

結論

​ 1、聲明式函數 在同一個script標簽 任何位置都可以使用 但是在不同的script標簽中只能在script標簽後才可以調用

2、賦值式函數 不論什麼情況 永遠只能在函數之後調用


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • HarmonyOS 開發入門(二) 日常逼逼叨 在HarmonyOS 開發入門(一)中我們描述了 HarmonyOS 開發的語言ArKTs以及Ts簡單的入門級語法操作,接下來我們進入第二部分HarmonyOS開發編輯器以及helloWorld項目創建,有任何說的不合理的地方,希望各位看官老爺批評指正 ...
  • HarmonyOS 開發入門(一) 日常逼逼叨 因為本人之前做過一些Android相關的程式開發,對移動端的開發興趣比較濃厚,近期也瞭解到了一些關於華為HarmonyOS 4.0 的事件熱點,結合黑馬相關教學視頻以及一些相關的技術博客,對HarmonyOS開發做一個知識總結,有任何說的不合理的地方, ...
  • 原文地址: Android app相容低版本Java環境 - Stars-One的雜貨小窩 起因是修複一個Bug遇到的問題,找到了一個可以讓app相容低版本java的方法 眾所周知,Android版本更新後,其內置的JRE環境也隨之更新了 假如我們在app中用到了JDK8的特有的屬性,而用戶的手機設 ...
  • 原來錯誤代碼 mounted() { .... this.map.addEventListener("click", function(e){//地圖單擊事件 var geocoder = new BMap.Geocoder(); var point = new BMap.Point(e.latln ...
  • typora-copy-images-to: media 數組 一、概念 對象中可以通過鍵值對存儲多個數據,且數據的類型是沒有限制的,所以通常會存儲一個商品的信息或一個人的信息: var obj = { goodsname:"手機", price:"5000", introduce:"手機很時尚,很 ...
  • 不要問自己需要什麼樣的人生,而要問自己想要成為什麼樣的人。 我們從前面的學習知道一個 React 組件不僅僅只包含 DOM 結構的,還應該樣式和 Javascript 邏輯的。這裡我們認識邏輯構造之事件處理。 1. React 事件處理 這裡列舉了在 React 中事件的幾種綁定處理方式: impo ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 仿貝殼地圖畫圈找房功能實現(高德地圖) 前言 在最近租房時,看到貝殼找房上線了一個地圖畫圈找房的功能,感覺很是新奇。接觸地圖開發也有很長一段時間了,以前大部分都是基於web pc端開發,所以一般遇到這種圈選,繪製多邊形圓形都是直接基於官方 ...
  • 項目代碼同步至碼雲 weiz-vue3-template 要求代碼規範,主要是為了提高多人協同和代碼維護效率,結合到此項目,具體工作就是為項目配置 eslint 和 prettier。 editorconfig 安裝 EditorConfig for VS Code 插件,根目錄下新建 .edito ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...