JavaScript 第2章 基本语法

news2024/10/10 13:07:22

第二部分:基本语法

第2章:基本语法

变量声明:let, const, var

变量声明

  • var:全局或函数级作用域,可重复声明同名变量。
  • let:块级作用域,不可重复声明同名变量。
  • const:块级作用域,声明常量,一旦赋值不可更改。

示例:

// 使用var声明变量
var x = 10;
if (true) {
    var x = 20; // 在整个作用域内都可以访问
}
console.log(x); // 输出20

// 使用let声明变量
let y = 10;
if (true) {
    let y = 20; // 仅在if块内可访问
}
console.log(y); // 输出10

// 使用const声明常量
const PI = 3.14;
// PI = 3.15; // 抛出错误:Assignment to constant variable.

数据类型:字符串、数字、布尔值、数组、对象

字符串

  • 字符串可以使用单引号或双引号包裹。
  • 使用模板字符串可以方便地拼接字符串。

示例:

let name = 'Alice';
let greeting = `Hello, ${name}!`; // 使用模板字符串
console.log(greeting); // 输出: Hello, Alice!

数字

  • 数字可以表示整数或浮点数。

示例:

let age = 25;
let pi = 3.14159;
console.log(age + pi); // 输出: 28.14159

布尔值

  • 布尔值有两个可能的值:true 和 false。

示例:

let isAdult = true;
console.log(isAdult); // 输出: true

数组

  • 数组用于存储多个值。

示例:

let fruits = ['apple', 'banana', 'orange'];
fruits.push('grape'); // 添加元素
console.log(fruits[0]); // 输出: apple
console.log(fruits.length); // 输出: 4

对象

  • 对象用于存储键值对。

示例:

let person = {
    name: 'Bob',
    age: 30,
    sayHello: function() {
        console.log(`Hello, my name is ${this.name}.`);
    }
};
person.sayHello(); // 输出: Hello, my name is Bob.

字面量与构造函数

字面量

  • 字面量是直接在代码中表示值的一种方式。
  • 字符串、数字、布尔值、数组、对象都可以使用字面量表示。

构造函数

  • 构造函数是一种特殊的函数,用于创建具有特定属性和方法的对象。

示例:

// 字面量表示
let literalPerson = { name: 'Charlie', age: 35 };

// 构造函数表示
function Person(name, age) {
    this.name = name;
    this.age = age;
    this.greet = function() {
        console.log(`Hi, I'm ${this.name} and I am ${this.age} years old.`);
    };
}
let constructedPerson = new Person('David', 40);
constructedPerson.greet(); // 输出: Hi, I'm David and I am 40 years old.

运算符:算术运算符、比较运算符、逻辑运算符

算术运算符

  • 常见的算术运算符包括:加 (+)、减 (-)、乘 (*)、除 (/)、模 (%)。

示例:

let a = 10;
let b = 5;
console.log(a + b); // 输出: 15
console.log(a - b); // 输出: 5
console.log(a * b); // 输出: 50
console.log(a / b); // 输出: 2
console.log(a % b); // 输出: 0

比较运算符

  • 比较运算符用来比较两个值,并返回一个布尔值。

示例:

let c = 10;
let d = 20;
console.log(c == d); // 输出: false
console.log(c != d); // 输出: true
console.log(c > d); // 输出: false
console.log(c < d); // 输出: true
console.log(c >= d); // 输出: false
console.log(c <= d); // 输出: true

逻辑运算符

  • 主要有逻辑与 (&&)、逻辑或 (||) 和逻辑非 (!)。

示例:

let e = true;
let f = false;
console.log(e && f); // 输出: false
console.log(e || f); // 输出: true
console.log(!e); // 输出: false

表达式与语句

表达式

  • 表达式是用来计算值的一组元素。

语句

  • 语句是执行某些操作的一组元素。

示例:

// 表达式
let result = 1 + 2;

// 语句
if (result > 2) {
    console.log('Result is greater than 2.');
} else {
    console.log('Result is not greater than 2.');
}

通过这些示例,读者可以更好地理解JavaScript的基本语法,并学会如何在实际的业务场景中应用这些语法。例如,在创建用户界面时,可以使用变量和对象来管理用户数据;在处理用户输入时,可以利用条件语句和循环来实现逻辑判断和数据处理。

在这里插入图片描述

我们会继续添加更多案例来帮助读者更好地理解和应用JavaScript的基本语法。以下是一些新的案例,涵盖了常见的业务应用场景:

第二部分:基本语法

第2章:基本语法
变量声明:let, const, var

示例:变量作用域与提升

console.log(x); // 输出: undefined
console.log(y); // 抛出ReferenceError,因为let声明的变量不会被提升
var x = 10;
let y = 20;

示例:常量的使用

const PI = 3.14159;
console.log(PI); // 输出: 3.14159
// PI = 3.15; // 抛出TypeError,因为const声明的变量不可重新赋值

示例:变量在循环中的作用域

for (let i = 0; i < 5; i++) {
    console.log(i); // 输出: 0, 1, 2, 3, 4
}
// console.log(i); // 抛出ReferenceError,因为let声明的i只在循环体内部有效
数据类型:字符串、数字、布尔值、数组、对象

示例:字符串操作

let name = 'Alice';
let message = `Hello, ${name}!`;
console.log(message); // 输出: Hello, Alice!

// 字符串长度
console.log(name.length); // 输出: 5

// 字符串截取
console.log(name.substring(1, 3)); // 输出: li

示例:数字操作

let num1 = 10;
let num2 = 5.5;

// 四舍五入
console.log(Math.round(num2)); // 输出: 6

// 保留两位小数
console.log(num2.toFixed(2)); // 输出: "5.50"

// 进行数学运算
console.log(num1 + num2); // 输出: 15.5
console.log(num1 * num2); // 输出: 55

示例:布尔值的使用

let isLoggedIn = true;
let isStudent = false;

// 条件判断
if (isLoggedIn) {
    console.log('用户已登录');
} else {
    console.log('用户未登录');
}

// 布尔值转换
console.log(Boolean(0)); // 输出: false
console.log(Boolean('')); // 输出: false

示例:数组操作

let fruits = ['apple', 'banana', 'orange'];

// 添加元素
fruits.push('grape');
console.log(fruits); // 输出: ['apple', 'banana', 'orange', 'grape']

// 移除元素
fruits.pop();
console.log(fruits); // 输出: ['apple', 'banana', 'orange']

// 遍历数组
fruits.forEach((fruit, index) => {
    console.log(`${index}: ${fruit}`);
});
// 输出:
// 0: apple
// 1: banana
// 2: orange

示例:对象操作

let person = {
    name: 'Bob',
    age: 30,
    hobbies: ['reading', 'coding'],
    greet: function() {
        console.log(`Hello, my name is ${this.name}.`);
    }
};

// 访问对象属性
console.log(person.name); // 输出: Bob
console.log(person['age']); // 输出: 30

// 修改对象属性
person.age = 31;
console.log(person.age); // 输出: 31

// 调用对象方法
person.greet(); // 输出: Hello, my name is Bob.

// 遍历对象属性
Object.keys(person).forEach(key => {
    console.log(`${key}: ${person[key]}`);
});
// 输出:
// name: Bob
// age: 31
// hobbies: reading,coding
// greet: [Function: greet]
字面量与构造函数

示例:使用构造函数创建对象

function Car(make, model, year) {
    this.make = make;
    this.model = model;
    this.year = year;
    this.describe = function() {
        console.log(`${this.make} ${this.model} from ${this.year}`);
    };
}

let myCar = new Car('Toyota', 'Corolla', 2020);
myCar.describe(); // 输出: Toyota Corolla from 2020
运算符:算术运算符、比较运算符、逻辑运算符

示例:使用算术运算符

let a = 10;
let b = 5;

console.log(a + b); // 输出: 15
console.log(a - b); // 输出: 5
console.log(a * b); // 输出: 50
console.log(a / b); // 输出: 2
console.log(a % b); // 输出: 0
console.log(++a); // 输出: 11
console.log(--b); // 输出: 4

示例:使用比较运算符

let c = 10;
let d = 20;

console.log(c == d); // 输出: false
console.log(c != d); // 输出: true
console.log(c > d); // 输出: false
console.log(c < d); // 输出: true
console.log(c >= d); // 输出: false
console.log(c <= d); // 输出: true
console.log(c === '10'); // 输出: false

示例:使用逻辑运算符

let e = true;
let f = false;

console.log(e && f); // 输出: false
console.log(e || f); // 输出: true
console.log(!e); // 输出: false
console.log(!(e && f)); // 输出: true
console.log((e && f) || !f); // 输出: true
表达式与语句

示例:复合赋值运算符

let x = 10;
x += 5; // 等价于 x = x + 5;
console.log(x); // 输出: 15

x *= 2; // 等价于 x = x * 2;
console.log(x); // 输出: 30

示例:条件(三元)运算符

let score = 85;
let grade = score >= 60 ? '及格' : '不及格';
console.log(grade); // 输出: 及格

let bonus = score > 90 ? 100 : (score > 80 ? 50 : 0);
console.log(bonus); // 输出: 50

示例:switch 语句

let dayOfWeek = 'Wednesday';

switch (dayOfWeek) {
    case 'Monday':
        console.log('Today is Monday.');
        break;
    case 'Tuesday':
        console.log('Today is Tuesday.');
        break;
    case 'Wednesday':
        console.log('Today is Wednesday.');
        break;
    default:
        console.log('Today is not one of the first three days.');
}

// 输出: Today is Wednesday.

通过这些示例,读者可以进一步理解JavaScript中的变量声明、数据类型、运算符以及语句的使用,并且能够将这些基本概念应用于实际的业务场景中,如用户信息管理、表单验证、数据处理等。

在这里插入图片描述

我们继续增加一些示例,以便更全面地展示JavaScript在实际业务场景中的应用。这次我们将关注一些常见的业务需求,如数据验证、表单处理、动态更新UI等。

第二部分:基本语法

第2章:基本语法
字面量与构造函数

示例:构造函数与继承

function Vehicle(make, model, year) {
    this.make = make;
    this.model = model;
    this.year = year;
}

Vehicle.prototype.describe = function() {
    console.log(`${this.year} ${this.make} ${this.model}`);
};

function Car(make, model, year, doors) {
    Vehicle.call(this, make, model, year); // 调用父类构造函数
    this.doors = doors;
}

// 继承Vehicle
Car.prototype = Object.create(Vehicle.prototype);
Car.prototype.constructor = Car;

let myCar = new Car('Toyota', 'Corolla', 2020, 4);
myCar.describe(); // 输出: 2020 Toyota Corolla
console.log(myCar.doors); // 输出: 4
运算符:算术运算符、比较运算符、逻辑运算符

示例:位运算符

let a = 5; // 二进制形式为 0101
let b = 3; // 二进制形式为 0011

console.log(a & b); // 按位与运算,输出: 1 (二进制0001)
console.log(a | b); // 按位或运算,输出: 7 (二进制0111)
console.log(a ^ b); // 按位异或运算,输出: 6 (二进制0110)
console.log(~a); // 按位非运算,输出: -6 (二进制...11111010)
console.log(a << 1); // 左移运算,输出: 10 (二进制1010)
console.log(a >> 1); // 右移运算,输出: 2 (二进制0010)

示例:逻辑运算符的短路求值

let user = {
    name: 'Alice',
    isAdmin: false
};

function adminAccess(user) {
    return user.isAdmin && console.log(user.name);
}

adminAccess(user); // 输出: undefined,因为逻辑与左侧为false,右侧不会执行
表达式与语句

示例:使用闭包保护变量

function createCounter() {
    let count = 0; // 私有变量
    return {
        increment: function() {
            count++;
            return count;
        },
        decrement: function() {
            count--;
            return count;
        },
        getCount: function() {
            return count;
        }
    };
}

let counter = createCounter();
console.log(counter.increment()); // 输出: 1
console.log(counter.decrement()); // 输出: 0
console.log(counter.getCount()); // 输出: 0
示例:动态生成HTML元素

示例:动态生成表格

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Dynamic Table Generation</title>
</head>
<body>
    <table id="dataTable"></table>
    <script>
        let tableData = [
            { name: 'Alice', age: 30 },
            { name: 'Bob', age: 25 },
            { name: 'Carol', age: 28 }
        ];

        function generateTable(tableData) {
            let table = document.getElementById('dataTable');

            // 创建表头
            let headerRow = document.createElement('tr');
            let headers = ['Name', 'Age'];
            headers.forEach(headerText => {
                let th = document.createElement('th');
                th.textContent = headerText;
                headerRow.appendChild(th);
            });
            table.appendChild(headerRow);

            // 创建数据行
            tableData.forEach(rowData => {
                let row = document.createElement('tr');
                Object.values(rowData).forEach(value => {
                    let cell = document.createElement('td');
                    cell.textContent = value;
                    row.appendChild(cell);
                });
                table.appendChild(row);
            });
        }

        generateTable(tableData);
    </script>
</body>
</html>
示例:使用事件监听器

示例:按钮点击事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Button Click Event Listener</title>
</head>
<body>
    <button id="clickButton">Click Me!</button>
    <p id="message"></p>
    <script>
        let button = document.getElementById('clickButton');
        let message = document.getElementById('message');

        button.addEventListener('click', function() {
            message.textContent = 'Button was clicked!';
        });
    </script>
</body>
</html>
示例:表单验证

示例:表单输入验证

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Form Validation</title>
</head>
<body>
    <form id="registrationForm">
        <label for="username">Username:</label>
        <input type="text" id="username" required>
        <br>
        <label for="password">Password:</label>
        <input type="password" id="password" required>
        <br>
        <button type="submit">Submit</button>
    </form>
    <p id="validationMessage"></p>
    <script>
        let form = document.getElementById('registrationForm');
        let usernameInput = document.getElementById('username');
        let passwordInput = document.getElementById('password');
        let message = document.getElementById('validationMessage');

        form.addEventListener('submit', function(event) {
            event.preventDefault(); // 阻止表单默认提交行为

            if (usernameInput.value.trim() === '') {
                message.textContent = 'Username cannot be empty.';
                return;
            }

            if (passwordInput.value.trim() === '') {
                message.textContent = 'Password cannot be empty.';
                return;
            }

            // 如果验证通过,可以继续处理表单数据
            message.textContent = 'Form submitted successfully!';
        });
    </script>
</body>
</html>

在这里插入图片描述

示例:日期和时间

示例:显示当前时间和日期

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Current Date and Time</title>
</head>
<body>
    <p id="currentTime"></p>
    <script>
        function displayCurrentDateTime() {
            let now = new Date();
            let dateString = now.toLocaleString();
            document.getElementById('currentTime').textContent = "Current time: " + dateString;
        }

        displayCurrentDateTime(); // 页面加载时立即显示时间
    </script>
</body>
</html>

在这里插入图片描述

通过这些示例,读者可以更好地理解如何使用JavaScript进行数据处理、事件处理、动态生成HTML元素等操作,并将这些技术应用到实际的Web开发项目中。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2202059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WGCNA加权基因共表达网络多步法分析学习

之前笔者介绍过一步法的分析的流程&#xff1a; WGCNA加权基因共表达网络一步法分析学习 https://mp.weixin.qq.com/s/2Q37RcJ1pBy_WO1Es8upIg 建议先看一下之前的推文&#xff0c;了解一下WGCNA的基础原理。 这次就来介绍一下多步法 分析步骤&#xff1a; 1.导入 rm(list…

安全工具 | 搭建带有 Web 仪表板的Interact.sh

介绍 Interactsh 是一个用于检测带外交互的开源工具。它是一种旨在检测导致外部交互的漏洞的工具。本文将主要介绍在子域上设置私有 Interact.sh 服务器以及部署其 Web 应用程序。只需一个 AWS EC2 或 VPS 实例和一个域。 要求 •具有静态IP的AWS EC2 / VPS •拥有自己的域…

A CXL-Powered Database System: Opportunities and Challenges——论文阅读

ICDE 2024 Paper CXL论文阅读笔记整理 背景 Compute Express Link&#xff08;CXL&#xff09;是处理器和设备&#xff08;如内存缓冲区&#xff09;之间的开放式行业标准互连协议&#xff0c;基于CXL的内存架构如图1所示&#xff0c;拥有高带宽、低延迟以及对一致性和内存语…

Java 的数据结构整理(整合版)

Java 的数据结构整理&#xff08;整合版&#xff09; 一、数据输入输出 https://www.runoob.com/java/java-scanner-class.html 这部分是为了预防 leetcode 刷习惯了&#xff0c;忘记怎么处理输入输出的问题 数据输入 Java的数据输入和 C 相比非常繁琐&#xff0c;因此大多…

双十一有哪些不容错过的电子产品?看完不信你还不心动!

2024年双十一购物庆典即将上演&#xff0c;各大电商将携众多精品数码产品亮相&#xff0c;涵盖最新智能手机、笔记本、平板及智能手表等。这些产品集时尚外观与高端性能于一身&#xff0c;旨在满足用户多元化需求&#xff0c;如提升工作效率、享受娱乐时光、优化出行体验等。为…

中国上市药品目录集数据库查询方法-支持数据下载

《中国上市药品目录集》由国家食品药品监督管理总局以数据库形式发布并实时更新&#xff0c;由CDE负责日常维护和管理。《中国上市药品目录集》收录了在中国批准上市的创新药、改良型新药、化学药品新注册分类的仿制药以及通过质量和疗效一致性评价的药品的具体信息。这个目录集…

jmeter入门: 安装

1. download Apache JMeter - Download Apache JMeter 2. 解压jmeter包 3. 安装插件Install :: JMeter-Plugins.org 下载jar包&#xff0c;放到lib/ext目录 4. 打开jmeter &#xff08;可以看到插件管理选项&#xff09;

Autoware.universe-红绿灯识别程序调试

1、环境 gpu&#xff1a;RTX3070 操作系统&#xff1a;ubuntu 22.04 显卡驱动支持的最高cuda版本&#xff1a;cuda 12.6 cuda运行版本&#xff1a;cuda 12.3&#xff08;注&#xff1a;cuda运行版本需要小于显卡驱动支持的最高cuda版本&#xff09; 2、仓库 https://gitee.com/…

UR-vnc如何卸载和重新安装

urvnc资源下载https://download.csdn.net/download/xiaoding_ding/87610583 场景&#xff1a;有时候我们安装ur机器人vnc的时候没有完全安装完就拔了U盘&#xff0c;会出现一直登陆一直提示密码错误。这个时候就需要我们卸载这个vnc,然后重新进行安装了。 如果不卸载会提示已…

人工智能:超越人类思维的边界

人工智能在追求真理和正确性方面面临诸多挑战&#xff0c;而人类的思维方式在其中扮演着重要角色。然而&#xff0c;新一代的人工智能正通过更具实验性的方法&#xff0c;力图在机器学习领域实现远超人类的突破。 AlphaGo&#xff1a;人工智能的里程碑 提及人工智能的突破&…

全闪 SDS 一体机提供 FC 能力承载医院核心业务

邹平市人民医院使用 X3000 SDS 一体机组建分布式存储集群&#xff0c;通过 FC 接口 与 VMware 集群连接&#xff0c;以全闪池承载核心业务&#xff0c;对象存储承载 PACS 数据&#xff0c;实现存储架构的升级改造。 “新医改”的不断推进&#xff0c;对医院的运营管理、服务质…

洗衣店管理升级:Spring Boot订单系统

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

楼宇电力测量有什么特点

楼宇电力测量作为现代建筑管理中不可或缺的一环&#xff0c;其特点体现在多个方面&#xff0c;涵盖了测量的准确性、实时性、高效性以及对于节能和能源管理的重要性。这些特点使得楼宇电力测量系统在现代建筑管理中发挥着越来越重要的作用&#xff0c;为建筑行业的绿色发展和可…

华为Eth-trunk链路聚合加入到E-trunk实现跨设备的链路聚合

一、适用场景&#xff08;注&#xff1a;e-trunk与eth-trunk是2个不同的概念&#xff09; 1、企业中有重要的server服务器业务不能中断的情况下&#xff0c;可将上行链路中的汇聚交换机&#xff0c;通过eth-trunk链路聚合技术&#xff0c;实现链路故障后&#xff0c;仍有可用的…

Elasticsearch(看这一篇就够了)

目录&#xff1a; Elasticsearch介绍正排索引和倒排索引Elasticsearch安装安装ES服务安装服务安装kibana 索引操作创建索引查询索引库修改索引库删除索引库 Elasticsearch常用操作文档操作新增文档查询文档删除文档根据id批量查询文档查询所有文档修改文档部分字段 域的属性分词…

Nacos微服务配置管理和拉取

目录 前言 需求分析 解决方案 实现步骤 进入nacos控制面板 新建配置 项目配置获取步骤 统一配置管理步骤 引入Nacos的配置管理客户端依赖 新建bootstrap.yml文件 更改application.yml文件 测试 总结 前言 回顾之前的微服务项目结构&#xff0c;搭建了两个微服务&a…

Day06-数据库服务存储引擎

Day-06-数据库存储引擎知识 1、数据库联合索引应用2、数据库索引扩展信息&#xff08;扩展列信息说明&#xff09;3、数据库索引应用总结4、数据库存储引擎概述5、数据库存储引擎种类6、数据库存储引擎特性&#xff08;Innodb&#xff09;Innodb vs MyISAM7、数据库存储引擎应用…

Web前端入门

文章目录 前言1 Web前端概述1.1 网站和网页1.2 HTML语言1.3 网页的形成1.4 常用浏览器1.5 浏览器内核&#xff08;渲染引擎)1.6 web标准 2 HTML标签2.1 开发工具2.2 HTML语法规则2.3 标签的关系2.4 HTML注释标签2.5 结构标签 3 常用标签3.1 标题标签3.2 段落标签3.3 换行标签3.…

开源城市运动预约的工具类小程序源码

运动场馆预约小程序是一款主要针对城市运动预约的工具类程序&#xff0c; 产品主要服务人群为20-45岁运动爱好者&#xff0c; 程序前后端完整代码&#xff0c;包括场馆动态&#xff0c;运动常识&#xff0c;羽毛球场地预约&#xff0c;足球场地预约&#xff0c;篮球场地预约&a…

【C语言】常见概念

文章目录 库函数关键字字符和ASCll编码字符串与\0转义字符语句和语句分类注释 库函数 为了不再重复实现常见的代码&#xff0c;让程序员提升开发效率&#xff0c;C语言标准规定了一组函数&#xff0c;这些函数再由不同的编译器厂商根据标准进行实现&#xff0c;提供给程序员使…