第一章JavaScript简介

news2024/9/21 3:22:53

第一章JavaScript简介

js是一门,高级,动态,解释型编程语言

每种语言都必须有一个平台或标准库,用于执行包括基本输入和输出在内的基本操作.核心js语言定义了最小限度的API,可以操作数组,文本,数组,集合,映射等,但不包括任何输入输出的功能.输入和输出(以及更加复杂的特性,如联网,存储和图形处理)是内嵌js的"宿主环境"的责任.

浏览器是js最早的宿主,也是js代码最常见的运行环境,浏览器环境允许js代码从用户的鼠标和键盘或者发送http请求获取输入,也允许js代码通过html和css向用户显示输出.

2010年后,js代码又有了另一个宿主环境.与限制js只能使用浏览器提供的API不同,Node给予了js访问整个操作系统的权限,允许js程序读取文件,通过网络发送和接受数据,以及发送和处理http请求.Node是实现web服务器的一种流行方式,也是编写可替代shell脚本的简单使用脚本的便捷工具.

本书,大部分内容聚焦js语言本身.11章讲述js标准库,15章介绍浏览器宿主,16章介绍node宿主环境.

全书首先从底层基础讲起,然后逐步过渡到高级以及更加抽象的层次.

探索JavaScript

要尝试js代码,最简单的方式就是,打开浏览器的web开发工具f12,然后选择console控制台.之后就可以在提示符后面输入代码.

另一种方式是下载node安装node之后,打开终端窗口,然后输出node回车,想下面这样开始交互式js会话.

Hello World

浏览器控制台console.log(“hello world”)

JavaScript之旅

本章之后,我们将深入js的最底层,第二章将解释js注释,分号和Unicode字符集,第三章会更加有意思.

let x;
x = 0;
x // 0
x = 1;
x = 0.01;
x = "hello world"
x = false
x = null
x = undefined
x = {
	a:"js niubi"
}
x.a = 10
x["a"] = 10
a?.b

示例:字符频率柱形图

该程序从标准输入读取文本,计算该文本的字符频率柱形图,然后打印出来

image.png

// 1字符频率柱形图.js
/*
 * @Author: zou-hong-run zhr19853149156@163.com
 * @Date: 2023-03-06 15:56:05
 * @LastEditors: zou-hong-run zhr19853149156@163.com
 * @LastEditTime: 2023-03-06 16:26:53
 * @FilePath: \JavaScript\js\1字符频率柱形图.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
/**
 * 这个node程序从标准输入中读取文本,计算文本中每个字母出现的频率,
 * 然后按照使用的频率降序显示一个柱形图,
 * 运行这个程序需要node 12或更高版本
 * 
 */
// 这个类扩展了Map,以便get()方法在key不在映射中时返回指定的值,而不是null
class DefaultMap extends Map{
  constructor(defaultValue){
    super()
    this.defaultValue = defaultValue
  }
  get(key){
      if(this.has(key)){// 如果映射中有key
        return super.get(key)// 从超类中返回值
      }else{
        return this.defaultValue// 否则返回默认值
      }
  }
}

// 这个类计算并显示字母的频率柱形图
class Histogram{
  constructor(){
    this.letterCounts = new DefaultMap(0);// 字母到数量的映射
    this.totalLetters = 0;// 字母总数
  }
  add(text){
    // 移除文本中空白,然后将字母转换为大写
    text = text.replace(/\s/g,"").toUpperCase();
    // 循环文本中的字符
    for (const character of text) {
      let count = this.letterCounts.get(character);// 取得之前的数量
      this.letterCounts.set(character,count+1);// 递增
      this.totalLetters++;
    }
  }
  // 将柱形图转换为字符串并显示ASCII图形
  toString(){
    // 把映射转换为一个[key,value]数组的数组
    let entries = [...this.letterCounts];
    entries.sort((a,b)=>{// 这个函数定义排序的方式
      if(a[1] === b[1]){ // 如果数量相同
          return a[0]<b[0]?-1:1;// 按字母表排序
      }else{
        return b[1] - a[1];// 数量大的牌前面
      }
    })
    // 把数量转换为百分比
    for (const entry of entries) {
      entry[1] = entry[1] / this.totalLetters * 100
    }
    // 删除小于1%的条目
    entries = entries.filter(entry=>entry[1]>=1);
    // 接着把每个条目转换为一行文本
    let lines = entries.map(
      ([l,n])=> `${l}:${"#".repeat(Math.round(n))}${n.toFixed(2)}%`
    );
    
    return lines.join("\n");
  }
}
// 这个async函数创建爱你一个Histogram对象
// 从标准输入异步读取文本块,然后,把这些块添加到柱形图中
async function histogramFromStdin(){
  process.stdin.setEncoding('utf-8');// 读取Unicode字符串,而非字母
  let histogram = new Histogram()
  for await(let chunk of process.stdin){
    histogram.add(chunk)
  }
  return histogram
}
histogramFromStdin().then(histogram=>{
    console.log(histogram.toString());
})

小结

后面会学到,

注释,标识符,变量,类型,

然后是表达式,语句,对象和函数

接着是

类和模块等

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

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

相关文章

基于Servlet实现分页查询

Servlet JSPJSTL MySQLBootstrap 等技术实现分页查询功能。 所用工具&#xff1a;IDEA 2022.3.3 Navicat Tomcat 等。 本文目录 一&#xff1a;运行效果 二&#xff1a;代码详解 &#xff08;1&#xff09;index.jsp &#xff08;2&#xff09;PageBean &#xff08…

图解操作系统笔记

硬件基础 CPU是如何执行程序的&#xff1f; 程序执行的基本过程 第一步&#xff0c;CPU 读取「程序计数器」的值&#xff0c;这个值是指令的内存地址&#xff0c;然后 CPU 的「控制单元」操作「地址总线」指定需要访问的内存地址&#xff0c;接着通知内存设备准备数据&#…

python:并发编程(十七)

前言 本文将和大家一起探讨python并发编程的实际运用&#xff0c;会以一些我实际使用的案例&#xff0c;或者一些典型案例来分享。本文使用的案例是我实际使用的案例&#xff08;中篇&#xff09;&#xff0c;是基于之前效率不高的代码改写成并发编程的。让我们来看看改造的过…

excel数据的编排与整理——行列的批量处理

excel数据的编排与整理——行列的批量处理 1 一次性插入多行多列 1.1 插入连续行 1.1.0 题目内容 1.1.1 选中插入的位置➡按住shift键➡往下选中2行 1.1.2 鼠标右击➡点击插入 1.1.3 插入后的效果 1.2 插入不连续行 1.2.0 题目内容 1.2.1 按下ctrl键➡选中插入的位置,需要插…

7.4_1B树(二序查找树BST的升级版)

如果需要查找的值比节点小&#xff0c;会向左子树方向查找&#xff0c;如果比节点值大&#xff0c;会向右子树方向查找 拓展为5叉的形态 5叉排序树的定义 num是这个节点中真实存在的节点个数 那么一个节点中 最少有1个关键字&#xff0c;两个分叉 最多有4个关键字&#xff0c…

数据结构:二叉树详解

目录 概念&#xff08;在做习题中常用的概念&#xff09; 两种特殊的二叉树 二叉树的性质 二叉树的遍历&#xff08;重点&#xff09; 如上图&#xff1a; 二叉树的构建&#xff08;代码表示一颗二叉树和一些操作二叉树的方法&#xff09; 二叉树的oj习题讲解&#xff0…

代码审计-Java项目Filter过滤器CNVD分析XSS跨站框架安全

文章目录 Demo-Filter-过滤器引用Demo-ST2框架-组件安全CNVD-Jeesns-XSS跨站绕过CNVD-悟空CRM-Fastjson组件 Demo-Filter-过滤器引用 Filter&#xff1a;Javaweb三大组件之一(另外两个是Servlet、Listener) 概念&#xff1a;Web中的过滤器&#xff0c;当访问服务器的资源时&am…

编程语言的优劣评选标准与未来发展趋势——探索最佳编程语言选择

编程语言的优劣评选标准与未来发展趋势——探索最佳编程语言选择 评判标准不同编程语言的优点与缺点分析对编程语言未来发展的猜测和未来趋势 &#x1f495; &#x1f495; &#x1f495; 博主个人主页&#xff1a; 汴京城下君–野生程序员&#x1f495; &#x1f495; &#x…

编程输出三位数的水仙花数

目录 题目 分析思路 代码 题目 编程输出三位数的水仙花数 标准的 水仙花数 就是三位数&#xff0c;即将三位数的个位&#xff1b;十位&#xff1b;百位取出来&#xff0c;分别三次方相加&#xff0c;若个位&#xff1b;十位&#xff1b;百位三次方相加与原来的三位数相等&a…

模拟电路系列文章-频率响应的描述

目录 概要 整体架构流程 技术名词解释 技术细节 1.为什么受频率的影响 2.频率响应 小结 概要 提示&#xff1a;这里可以添加技术概要 电容和电感是储能元件&#xff0c;对不同频率的交流信号&#xff0c;它们具有不同的感抗或者容抗。虽然它们不消耗功率&#xff0c;但同电阻一…

【PHP】文件写入和读取详解

一&#xff0e;实现文件读取和写入的基本思路&#xff1a; 1&#xff0e;通过fopen方法打开文件&#xff1a;$fp fopen(/*参数&#xff0c;参数*/)&#xff0c;fp为Resource类型 2&#xff0e;进行文件读取或者文件写入操作&#xff08;这里使用的函数以1中返回的$fp作为参数…

Python网络爬虫基础进阶到实战教程

文章目录 认识网络爬虫HTML页面组成Requests模块get请求与实战效果图代码解析 Post请求与实战代码解析 发送JSON格式的POST请求使用代理服务器发送POST请求发送带文件的POST请求 Xpath解析XPath语法的规则集&#xff1a;XPath解析的代码案例及其详细讲解&#xff1a;使用XPath解…

macOS Sonoma 14 beta 2 (23A5276g) ISO、IPSW、PKG 下载

macOS Sonoma 14 beta 2 (23A5276g) ISO、IPSW、PKG 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Linu…

【致敬未来的攻城狮计划】打卡2:keil 程序下载尝试

下载 终于考完试了&#xff0c;然而攻城狮的截止期限也快到了QAQ&#xff0c;得尽快水&#xff08;划掉&#xff09;写几篇文章了&#xff01; 先争取可以成功下载一个空的程序。 先对上一篇文章下载 DFP 也就是 keil MDK Software Packs 做一个补充。我们要下载的是 RA_DFP…

[进阶]TCP通信综合案例:群聊

代码演示如下&#xff1a; 客户端&#xff1a; public class Client {public static void main(String[] args) throws Exception{System.out.println("客户端开启&#xff01;");//1.创建Socket对象&#xff0c;并同时请求与服务端程序的连接。Socket socket new…

网线制作实验

计算机网络综合实训 网线制作 所在院系 计算机与信息工程学院 学科专业名称 计算机科学与技术 导师及职称 柯宗武 教授 提交时间 2023.4.30 计算机网络综合实训报告 一、实验目的 1、掌握三类UTP线缆的制作和测试方法 2、了解三类UTP线缆的作用及布线方式 二、实验内容 1、局…

第二章 进程的描述与控制

目录 一、进程的概念、组成、特征 1.1 进程的概念 1.1.1 程序 1.1.2 进程 1.2 进程的组成 1.3 进程控制块PCB 1.4 进程的特征 二、进程的状态与转换 2.1 进程的状态 2.2 创建态、就绪态 2.3 运行态 2.4 阻塞态 2.5 终止态 2.6 进程状态的转换 2.7 进程的组织 三…

【C++篇】C++字符串:标准库string类

友情链接&#xff1a;C/C系列系统学习目录 知识总结顺序参考C Primer Plus&#xff08;第六版&#xff09;和谭浩强老师的C程序设计&#xff08;第五版&#xff09;等&#xff0c;内容以书中为标准&#xff0c;同时参考其它各类书籍以及优质文章&#xff0c;以至减少知识点上的…

python3.9 安装 pyspider

安装pyspider pip install pyspider 直接报错 Please specify --curl-dir/path/to/built/libcurl 于是从PythonLibs官网 中获取依赖并自行下载到本地 下载与3.9对应的 执行安装 pip install D:\下载\ad3-2.2.1-cp39-cp39-win32.whl 安装成功之后 执行 pip install p…

1748_Perl中使用通配符处理文件

全部学习汇总&#xff1a; GreyZhang/perl_basic: some perl basic learning notes. (github.com) 使用通配符处理文件一般是用于文件的拷贝、删除以及对文件逐个分析等功能。在Perl中遇到的相应的功能基本上也是如此。通配符匹配处理文件&#xff08;文件名&#xff09;需要使…