Javascript基礎語法詳解

  • 面向對象的語言.
  • 腳本語言,不需要編譯,瀏覽器解釋即可運行 .
  • 用于控制網頁的行為.
  • 瀏覽器的source可以打斷點調試, console輸入代碼可以執行
use strict指令:

在“嚴格模式”下運行js代碼, 防止意外創建全局變量等, 提高代碼安全性和執行效率.

使用:
  • 全局嚴格模式:在腳本的開頭添加 "use strict".
  • 函數級嚴格模式: 在函數的開頭添加 "use strict"
    function myFunction() {"use strict";// 僅該函數內部運行在嚴格模式下
    }
    
js的引入
1. 內部腳本
  • js可以放在任意位置,一般放在body標簽底部.
<body><h1>Hello, World!</h1><script>console.log("Hello from inline script!");</script>
</body>
2. 外部腳本
<head><script src="script.js"></script>
</head>
基礎語法
  • js區分大小寫,語句末尾的分號可有可無
  • 注釋和java一樣
輸出語句

window.alert(): 彈出警告框, window.可省略.

document.write(): 顯示在頁面上.

console.log() : 打印在控制臺.

基本數據類型
  • 原始數據類型是不可變的,存儲在棧內存中,按值比較.
  • Number:數字
  • String:字符串,用單引號、雙引號包裹
  • Boolean:布爾值
  • Undefined:變量未賦值.
  • Null:表示“無”或“空值”,類型是 object
引用數據類型
  • 引用數據類型是可變的,存儲在堆內存中,按引用比較

  • Object:表示對象,可以存儲鍵值對

    let person = {name: 'Alice',age: 30
    };
    
  • Array:數組

    let numbers = [1, 2, 3, 4, 5];
    
  • Function:函數也是對象

    function greet() {return 'Hello!';
    }
    
  • Date:日期和時間

    let now = new Date();
    
類型檢查

typeof :檢查數據類型。

console.log(typeof num1); // "number"
console.log(typeof str1); // "string"
console.log(typeof isActive); // "boolean"
console.log(typeof notAssigned); // "undefined"
console.log(typeof emptyValue); // "object"
console.log(typeof person); // "object"
console.log(typeof numbers); // "object"
console.log(typeof greet); // "function"
字符串

length : 字符串長度

charAt() : 返回指定位置的字符
indexOf() : 查找子字符串首次出現的位置
trim() : 去除字符串兩邊的空格
substring() : 截取字符串

變量
1. var
  • var定義的變量可以被覆蓋.
  • 具有函數作用域, 在函數內聲明的var變量在函數內有效:
function testVar() {if (true) {var x = 10; // 函數作用域}console.log(x); // 輸出: 10
}
testVar();//在函數外不能訪問:
<script>  function testVar() {  if (true) {  var x = 10; // 函數作用域  }   }  alert(x);  
</script>
  • 不受塊級作用域{}影響,即使聲明在塊內,塊外也可以訪問。
{var x = 10;
}
console.log(x); // 輸出: 10
2. let
  • 具有塊級作用域:變量只在聲明的 {} 內有效,超出作用域不能訪問
<script>  {  let a = 1;  }  alert(a);  //不會彈出警告框
</script>
  • 不能重復定義
{  let a = 1;  let a="s";  //報錯
}
3. const
  • 作用域:和let一樣,也不能重復定義

    {const d = 20;console.log(d); // 輸出 20
    }
    console.log(d); // 報錯: Uncaught ReferenceError: d is not defined
    
  • const 聲明的變量必須初始化.

  • const修飾的原始數據類型不能重新賦值

  • const修飾的引用數據類型如對象,數組的內容可以修改,引用(地址)不能修改。

    const f = 30;
    f = 40; // 報錯: TypeError: Assignment to constant variable.const arr = [1, 2, 3];
    arr.push(4); // 合法操作
    console.log(arr); // 輸出 [1, 2, 3, 4]
    
顯式類型轉換
轉換為字符串
console.log(String(123)); // 輸出 "123"
console.log((123).toString()); // 輸出 "123"
console.log(String(true)); // 輸出 "true"
console.log(String(null)); // 輸出 "null"
轉換為數字
console.log(Number("123")); // 輸出 123
console.log(Number("")); // 輸出 0
console.log(Number("123abc")); // 輸出 NaN
console.log(parseInt("123.45")); // 輸出 123
console.log(parseFloat("123.45")); // 輸出 123.45
轉換為布爾值
  • 0NaNfalse;
  • 空字符串是false;
  • NullUndefinedfalse;
console.log(Boolean(1)); // 輸出 true
console.log(Boolean(0)); // 輸出 false
console.log(Boolean("")); // 輸出 false
console.log(Boolean("hello")); // 輸出 true

不要使用==比較,使用===等號,因為===不僅比較值,還會比較類型是否相等.

循環
for...in循環:
  • 可用于遍歷對象,數組的屬性,不能遍歷字符串、SetMap.
  • 用于數組時,遍歷的是數組的索引,不是數組的值。
let obj = { name: "Alice", age: 25, city: "NY" };
for (const key in obj) {console.log(key, obj[key]);
}
// 輸出:
// name Alice
// age 25
// city NY
for...of循環:
  • 直接遍歷值,可用于數組、字符串、SetMap 等,不能遍歷對象
let arr = ["a", "b", "c"];for (const value of arr) {console.log(value); // 輸出 "a", "b", "c"(值)
}
forEach() 循環

用于遍歷數組.

語法:

array.forEach(function(currentValue, index, array) {});//currentValue(必需):當前正在處理的元素。
//index(可選):當前元素的索引
//array(可選):調用 forEach() 的原數組

示例:

let fruits = ["apple", "banana", "orange"];fruits.forEach(function(fruit, index) {console.log(index + ": " + fruit);
});//輸出:
/*0: apple
1: banana
2: orange*/
let numbers = [1, 2, 3, 4];numbers.forEach(num => console.log(num * 2));//輸出:2 4 6 8

注意:

forEach() 無法中途退出循環(break無效),return 也不會停止循環:

let arr = [1, 2, 3, 4, 5];arr.forEach(num => {if (num === 3) return; // 這里的 return 只會跳過當前迭代,不會終止循環console.log(num);
});

forEach() 不能直接修改原數組:

let arr = [1, 2, 3];arr.forEach(num => num = num * 2); // 這樣不會改變數組
console.log(arr);  // [1, 2, 3]

forEach() 不會跳過 undefined.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897560.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897560.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897560.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[雜學筆記] TCP和UDP的區別,對http接口解釋 , Cookie和Session的區別 ,http和https的區別 , 智能指針 ,斷點續傳

文章目錄 1. TCP和UDP的區別2. 對http接口解釋3. Cookie和Session的區別4. http和https的區別5. 智能指針6.斷點續傳 1. TCP和UDP的區別 tcp的特點&#xff1a; 面向連接&#xff0c;可靠性高&#xff0c;全雙工&#xff0c;面向字節流udp特點&#xff1a;無連接&#xff0c;不…

JAVASE(五)

目錄 一、成員變量和局部變量 1.定義 2.區別 &#xff08;1&#xff09;相同 &#xff08;2&#xff09;不同 二、方法和構造方法 1.定義 2.構造方法細節 3.方法重載 一、成員變量和局部變量 1.定義 &#xff08;1&#xff09;成員變量是…

Matlab中快速查找元素索引號

1、背景介紹 在算法設計過程中&#xff0c;有時候需要從一維/二維數組中&#xff0c;快速查找是否某個元素&#xff0c;以及該元素所在的位置。如一維矩陣[1 2 3 4 5 6 6 7 8]所示&#xff0c;元素6所在的位置為6 7。 2、函數測試 matlab中函數find()可以快速查找到指定元素所…

【DuodooTEKr 】多度科技 以開源之力,驅動企業數字化轉型

多度科技 背景 / Background 在全球產業鏈重構與國內經濟雙循環的浪潮下&#xff0c;中國制造業與貿易企業正面臨數字化升級的迫切需求。開源技術作為數字化轉型的基石&#xff0c;不僅能打破技術壁壘、降低企業成本&#xff0c;更能通過協作創新加速產業智能化進程。 多度科技…

【HarmonyOS Next】鴻蒙應用故障處理思路詳解

【HarmonyOS Next】鴻蒙應用崩潰處理思路詳解 一、崩潰問題發現后定位 1. 崩潰現象&#xff1a; 常見的崩潰問題表現為&#xff0c;應用操作后白屏閃退&#xff0c;或者應用顯示無響應卡死。 2.定位問題&#xff1a; 發現崩潰后&#xff0c;我們首先需要了解復現步驟&#x…

linunx ubuntu24.04.02裝libfuse2導致無法開機進不了桌面解決辦法

osu.appimage運行需要libfuse2 然后我就下了fuse,打了兩把第二天無法開機 這樣是不能開機的 這樣是可以開機的 解決辦法一&#xff1a;玩星火商店的osu&#xff0c;好了問題解決 解決辦法二&#xff1a; 在這個頁面 ctrl alt f2進入tty6 sudo apt install ubuntu-desktop 進…

Maven 的常用指令

一、核心構建指令 mvn clean 作用&#xff1a;刪除 target 目錄&#xff08;清理編譯/打包生成的文件&#xff09;。 場景&#xff1a;確保從頭開始構建&#xff0c;避免殘留文件干擾。 mvn compile 作用&#xff1a;編譯項目源代碼。 場景&#xff1a;快速檢查代碼是否能編…

llvm數據流分析

llvm數據流分析 1.數據流分析2.LLVM實現2.1.常量傳播2.2.活躍性分析 相關參考文檔&#xff1a;DataFlowAnalysisIntro、ustc編譯原理課程、南大程序分析課程1、南大程序分析課程2。 1.數據流分析 數據流分析在編譯優化等程序分析任務上都有重要應用。通常數據流分析可被抽象為…

C++ MySQL 常用接口(基于 MySQL Connector/C++)

C MySQL 常用接口&#xff08;基于 MySQL Connector/C&#xff09; 1. 數據庫連接 接口&#xff1a; sql::mysql::MySQL_Driver *driver; sql::Connection *con;作用&#xff1a; 用于創建 MySQL 連接對象。 示例&#xff1a; driver sql::mysql::get_mysql_driver_insta…

C++藍橋杯基礎篇(十一)

片頭 嗨~小伙伴們&#xff0c;大家好&#xff01;今天我們來學習C藍橋杯基礎篇&#xff08;十一&#xff09;&#xff0c;學習類&#xff0c;結構體&#xff0c;指針相關知識&#xff0c;準備好了嗎&#xff1f;咱們開始咯~ 一、類與結構體 類的定義&#xff1a;在C中&#x…

css中實現border距離視圖左右兩側有距離

首先看效果圖 再看css是如何實現 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.main {background-color: aqua;display: block;width: 300px;padding: 0px 32px;box-sizing: border-box;}/…

Ubuntu 22.04 無法進入圖形界面的解決方法

Ubuntu 22.04 無法進入圖形界面&#xff0c;只能進入 tty&#xff0c;可能是由于圖形界面相關的配置或驅動程序出現了問題。以下是一些常見的解決方法&#xff1a; 1. 檢查圖形界面服務狀態 首先&#xff0c;檢查圖形界面服務&#xff08;通常是 gdm 或 lightdm&#xff09;的…

Tweak Power:全方位電腦系統優化的高效工具

在日常使用電腦時&#xff0c;系統性能的下降、垃圾文件的堆積以及硬盤的老化等問題常常困擾著用戶。為了提升電腦性能、優化系統運行&#xff0c;許多人會選擇系統優化工具。然而&#xff0c;國內一些系統優化軟件常常因為廣告過多或功能冗雜而讓人望而卻步。此時&#xff0c;…

深入淺出Bearer Token:解析工作原理及其在Vue、Uni-app與Java中的實現Demo

目錄 前言1. 基本知識2. Demo3. 實戰 前言 &#x1f91f; 找工作&#xff0c;來萬碼優才&#xff1a;&#x1f449; #小程序://萬碼優才/r6rqmzDaXpYkJZF 1. 基本知識 Bearer Token是一種基于Token的認證機制&#xff0c;用于在HTTP請求中傳遞用戶的身份信息 應用于RESTful A…

kubernetes——part3-5 核心概念 Service

一、 service作用 使用kubernetes集群運行工作負載時&#xff0c;由于Pod經常處于用后即焚狀態&#xff0c;Pod經常被重新生成&#xff0c;因此Pod對應的IP地址也會經常變化&#xff0c;導致無法直接訪問Pod提供的服務&#xff0c;Kubernetes中使用了Service來解決這一問題&am…

從零開始 | C語言基礎刷題DAY1

?個人主頁&#xff1a;折枝寄北的博客 DAY1[2025.3.11] 1. 求兩個數的較大值2.從鍵盤輸入的兩個數的大小關系3.一個整數的奇偶性&#xff0c;請判斷4. 考試分數是否通過5.考試成績是否完美&#xff0c;請判斷 1. 求兩個數的較大值 題目&#xff1a; 寫一個函數求兩個整數的較…

開源模型時代的 AI 開發革命:Dify 技術深度解析

開源模型時代的AI開發革命&#xff1a;Dify技術深度解析 引言&#xff1a;AI開發的開源新紀元 在生成式AI技術突飛猛進的2025年&#xff0c;開源模型正成為推動行業創新的核心力量。據統計&#xff0c;全球超過80%的AI開發者正在使用開源模型構建應用&#xff0c;這一趨勢不僅…

Dify Web 前端獨立部署指南(與后端分離,獨立部署)

背景:單獨拆分前端出來部署,二開前后端 本文檔專注于 Dify Web 前端的部署流程和配置,適用于需要將項目部署到各種環境的運維人員和開發者。 1. 環境準備 1.1 部署環境要求 Node.js >= 18.17.0Nginx 或其他Web服務器(生產環境推薦)Docker(可選,用于容器化部署)1.…

《蒼穹外賣》SpringBoot后端開發項目核心知識點整理(DAY1 to DAY3)

目錄 一、在本地部署并啟動Nginx服務1. 解壓Nginx壓縮包2. 啟動Nginx服務3. 驗證Nginx是否啟動成功&#xff1a; 二、導入接口文檔1. 黑馬程序員提供的YApi平臺2. YApi Pro平臺3. 推薦工具&#xff1a;Apifox 三、Swagger1. 常用注解1.1 Api與ApiModel1.2 ApiModelProperty與Ap…

大數據hadoop課程筆記

1.課程導入 柯潔 Alpha Go是人工智能領域的里程碑。 深度學習 大模型deepseek chatgpt 大模型 和 大數據 之間有著非常緊密的關系。可以說&#xff0c;大數據是大模型發展的基石&#xff0c;而大模型是大數據價值挖掘的重要工具。 https://youtu.be/nN-VacxHUH8?sifj7Ltk…