当前位置: 首页 > news >正文

初识javascript

1. JavaScript 基础语法

(1) 变量声明

JavaScript支持三种声明变量的方式:

  • var:传统的变量声明方式,存在作用域问题(函数作用域)。

  • let:块级作用域变量声明方式,避免了var的作用域问题。

  • const:常量声明,声明后不能修改其值,具备块级作用域。

var name = "John";  // 使用 var 声明
let age = 25;       // 使用 let 声明
const isStudent = true;  // 使用 const 声明
(2) 数据类型

JavaScript有6种基本数据类型:

  • Primitive Typesstringnumberbooleanundefinednullsymbol(ES6新增)

  • Reference TypesObjectArrayFunctionDate

let name = "John";  // string
let age = 25;       // number
let isStudent = true;  // boolean
let person = { name: "John", age: 25 };  // object
let numbers = [1, 2, 3];  // array
(3) 类型转换

JavaScript会进行隐式或显式的类型转换。

  • 隐式转换:例如 "" + 1 会返回 "1",即数字1被转换成字符串。

  • 显式转换:使用 String()Number()Boolean() 等函数进行类型转换。

let num = 5;
let str = String(num);  // 转换为字符串 "5"
let bool = Boolean(num); // 转换为布尔值 true

2. 控制流

(1) 条件语句

JavaScript支持常见的条件语句:

  • ifelseelse if

  • switch:用于多个条件判断时更简洁。

let age = 18;
if (age >= 18) {console.log("Adult");
} else {console.log("Minor");
}let color = "red";
switch(color) {case "red":console.log("Red color");break;case "blue":console.log("Blue color");break;default:console.log("Unknown color");
}
(2) 循环语句

JavaScript提供几种循环方式来处理重复执行的任务:

  • for:用于知道循环次数时。

  • while:在循环条件满足时继续执行。

  • do...while:至少执行一次循环体。

// for 循环
for (let i = 0; i < 5; i++) {console.log(i);  // 输出 0 到 4
}// while 循环
let i = 0;
while (i < 5) {console.log(i);i++;
}// do...while 循环
let j = 0;
do {console.log(j);j++;
} while (j < 5);

3. 函数

(1) 函数声明

JavaScript中的函数声明语法如下:

function greet(name) {return "Hello, " + name;
}
console.log(greet("John"));  // 输出 "Hello, John"
(2) 匿名函数

可以创建没有名称的函数,通常与变量一起使用,或者作为回调传递:

let add = function(a, b) {return a + b;
};
console.log(add(5, 10));  // 输出 15
(3) 箭头函数 (Arrow Functions)

ES6新增的语法,使得函数写法更加简洁,同时保留了外部this的上下文。

const multiply = (a, b) => a * b;
console.log(multiply(3, 4));  // 输出 12
(4) 高阶函数

函数可以作为参数传递给另一个函数,或者作为返回值返回。JavaScript中的许多内建函数如map()filter()reduce()等都属于高阶函数。

let numbers = [1, 2, 3, 4];
let doubled = numbers.map(x => x * 2);  // 高阶函数的例子
console.log(doubled);  // 输出 [2, 4, 6, 8]

4. 对象和数组

(1) 对象 (Object)

对象是JavaScript中最常用的数据结构之一,用于存储键值对。

let person = {name: "John",age: 30,greet: function() {return "Hello " + this.name;}
};
console.log(person.name);  // 输出 "John"
console.log(person.greet());  // 输出 "Hello John"
(2) 数组 (Array)

数组是一个有序的元素集合,可以是任意类型的数据。

let fruits = ["apple", "banana", "cherry"];
console.log(fruits[0]);  // 输出 "apple"
fruits.push("orange");   // 向数组添加元素
console.log(fruits);  // 输出 ["apple", "banana", "cherry", "orange"]

5. 事件处理

JavaScript允许开发者监听和处理用户的交互事件(如点击、键盘输入、鼠标移动等)。

<button id="clickBtn">Click Me</button>
<script>
document.getElementById("clickBtn").addEventListener("click", function() {alert("Button clicked!");
});
</script>
  • addEventListener() 用于绑定事件处理器。

  • removeEventListener() 用于移除事件处理器。

6. 异步编程

JavaScript是单线程的,这意味着它一次只能做一件事。不过,可以通过异步编程实现并发行为。

(1) 回调函数

回调函数是异步操作完成时调用的函数。

function fetchData(callback) {setTimeout(() => {console.log("Data fetched");callback();}, 1000);
}fetchData(() => {console.log("Callback executed");
});
(2) Promise

Promise 是JavaScript中用于处理异步操作的标准化方式。

let promise = new Promise((resolve, reject) => {let success = true;if (success) {resolve("Success!");} else {reject("Failed!");}
});promise.then(result => {console.log(result);  // 输出 "Success!"
}).catch(error => {console.log(error);   // 输出 "Failed!"
});
(3) async/await

async/await 是基于 Promise 的语法糖,它让异步代码看起来像同步代码。

async function fetchData() {let result = await new Promise((resolve, reject) => {setTimeout(() => resolve("Data fetched"), 1000);});console.log(result);  // 输出 "Data fetched"
}fetchData();

7. DOM操作

JavaScript可以通过DOM(文档对象模型)操作HTML文档内容、结构和样式。

(1) 选择元素
let element = document.getElementById("myElement");  // 通过ID选择
let elements = document.getElementsByClassName("myClass");  // 通过类名选择
let allDivs = document.querySelectorAll("div");  // 通过CSS选择器选择
(2) 修改元素
element.innerHTML = "New Content";  // 修改内容
element.style.color = "blue";  // 修改样式
(3) 创建元素
let newDiv = document.createElement("div");
newDiv.textContent = "This is a new div!";
document.body.appendChild(newDiv);  // 将新元素添加到页面

8. ES6新特性

(1) 解构赋值
let person = { name: "John", age: 30 };
let { name, age } = person;  // 解构赋值
console.log(name);  // 输出 "John"
console.log(age);   // 输出 30
(2) 模块化

ES6支持模块化,可以使用exportimport来导出和导入模块。

// math.js
export function add(x, y) {return x + y;
}// main.js
import { add } from './math.js';

相关文章:

  • Sharding-JDBC 系列专题 - 第一篇:简介与快速入门
  • Cribl 对Windows-xml log 进行 -Removing filed-06
  • DSP28335入门学习——第一节:工程项目创建
  • SpringBoot 3 与 SpringDoc 打造完美接口文档
  • Centos9 离线安装 MYSQL8
  • Spring Boot集成MongoDB及实战技巧与性能调优
  • android framework开发的技能要求
  • 哈希表实现
  • 微前端框架 Wujie
  • python3GUI--仿网课答题播放器 By:PyQt5(分享)
  • System.out 详解
  • ts与面向对象
  • trivy开源安全漏洞扫描器——筑梦之路
  • 操作系统:进程是一个非常重要的抽象概念
  • QML 样式库
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类尺寸QSizeF)
  • Java发生OOM是否必然导致JVM退出
  • 【工具变量】A股上市企业数据资产披露水平数据集(2000-2023年)
  • 8.QT-按钮类控件|Push Button|Radio Button|Check Box|Tool Button(C++)
  • 提交bug单时,应该说明哪些信息?
  • 铺就长三角南北“交通动脉”,乍嘉苏改高速扩建项目首桩入位
  • 铁路上海站今日预计发送旅客65.8万人次,同比增长超16%
  • 15世纪以来中国文化如何向欧洲传播?《东学西传文献集成初编》发布
  • 王毅:为改革完善全球治理作出金砖贡献
  • 秦洪看盘|浮现新预期,存量资金积极调仓
  • 人民日报:应对外贸行业风险挑战,稳企业就是稳就业