第一章JavaScript简介

第一章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

示例:字符频率柱形图

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

第一章JavaScript简介_第1张图片

// 1字符频率柱形图.js
/*
 * @Author: zou-hong-run [email protected]
 * @Date: 2023-03-06 15:56:05
 * @LastEditors: zou-hong-run [email protected]
 * @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]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());
})

小结

后面会学到,

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

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

接着是

类和模块等

你可能感兴趣的:(JavaScript权威指南,javascript,前端,开发语言)