《JavaScript权威指南》读书笔记1

这篇具有很好参考价值的文章主要介绍了《JavaScript权威指南》读书笔记1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    服创要开始了,选题基本上都是关于ai的,之前写的项目没有和ai有关的,也没有学习过这方面的知识。现在我们组基本上确认的选题是:【A01】基于文心大模型的智能阅卷平台设计与开发【百度】【A01】基于文心大模型的智能阅卷平台设计与开发【百度】,我们的实力面对服创还是还是有点小巫见大巫。我是走前端,接下来打算先看《JavaScript权威指南》这本书。

《JavaScript权威指南》读书笔记1,js,读书笔记,javascript,开发语言,ecmascript《JavaScript权威指南》读书笔记1,js,读书笔记,javascript,开发语言,ecmascript

《JavaScript权威指南》读书笔记1,js,读书笔记,javascript,开发语言,ecmascript《JavaScript权威指南》读书笔记1,js,读书笔记,javascript,开发语言,ecmascript

《JavaScript权威指南》读书笔记1,js,读书笔记,javascript,开发语言,ecmascript《JavaScript权威指南》读书笔记1,js,读书笔记,javascript,开发语言,ecmascript

《JavaScript权威指南》读书笔记1,js,读书笔记,javascript,开发语言,ecmascript

客户端JavaScript

  function moveOn(){

  }
  setTimeout(moveOn,60000)//六秒后执行这个函数
  //当文档加载完成后才会触发
  window.onload=function(){
    var images=document.getElementsByTagName('img')
    for(var i=0;i<images.length;i++){
      var image=images[i]
      //注册时间处理程序的另一种方法
      if(image.addEventListener){
        image.addEventListener('click',hide,false)
      }else{
        image.attachEvent('onclick',hide)
      }
    }
    function hide(event){
      event.target.style.visibility='hidden'
    }
  }

语法结构

1区分大小写

JavaScript是区分大小写的语言,关键字,变量,函数名和所有标识符都必须采取一致的大小写形式。例如关键字while,不能写成While,online,ONLINE是不同的关键字。

HTML并不区分大小写(XHMTL区分大小写)

2Unicode转义序列

为了支持那些老旧技术的程序员,javaScript定义了一种特殊序列,使用6个Unicode字符全集来代表任意16位Unicode内码(因为有些无法显示和输入Unicode字符全集)。

这些Unicode转义序列均已\u为前缀,后跟随4个十六进制数。

例如:《JavaScript权威指南》读书笔记1,js,读书笔记,javascript,开发语言,ecmascript

3注释

JavaScript支持两种格式的注释:

  • //:之后的文本为注释
  • /*和*/之间的文本被当做注释(不能有嵌套的注释)

4直接量

直接使用的数据值:

  • 12                        //数字
  • 1.2                       //小数
  • "hello world"        //字符串文本
  • 'Hi'                       //另一个字符串
  • true                      //布尔值
  • /javascript/gi        //正则表达式直接量(用做模式匹配)
  • null                       //空
  • {x:1,y:2}                //对象
  • [1,2,3,4]                //数组

5标识符和保留字

标识符必须以字母,下划线(_)或者美元符($)开始,后续的字符可以是字母,数字,下划线或美元符。

有也些标识符拿出来做自己的关键字,所以在程序中这些关键字就不能用作标识符了

break             delete        funciton        return        typeof        

case               do             if                   switch        var

catch              else          in                  this            void

continue         false         instanceof     throw        while

debugger       finally        new              true            with

default            for            null                try

ECMAScript 5保留了这些关键字:

class              const        enum             export        import            super

严格模式下是保留字:

implements    let             private           public         yield

interface         package   protected       static     

6分号

//这里的分号可以省
a=3;
b=4
//下面的分号不能省
a=3; b=4
var y=x+f
(a+b).toString()
//javaScript会把这段代码看做:
var y=x+f(a+b).toString()

如果一条语句以'('、'['、'/'、'+'、'-'开始,那么他极有可能和前一条语句合在一起解析,所以这种情况需要加上分号。

在return、break和continue和随后的表达式不能有换行,然后加了换行,程序只有在极特殊的情况下才会报错,而且程序调试也不方便。

//这段代码
return
true
//JavaScript会解析为:
return; true;

类型、值和变量

1数字

JavaScript不区分整数值和浮点数值,所有数字均用浮点数表示,它能表示的最大值是:1.7976931348623157X,最小值是:5X,是使用二进制浮点数的编程语言(0.3-0.2!=0.2-0.1)这里的两个值算出来都是非常接近0.1的,但是不等于0.1。

表示的整数范围是从-9007199254740992~9007199254740992(即~),包括边界值,如果使用超过此范围的证书,则无法保证低位数字的精度。

1.1整数直接量

支持十六进制,以‘0X’或‘0x’为前缀,其后跟随十六进制的直接量

例如:oxff,oxCAEF911

支持八进制,以‘0’为前缀

例如:0377

1.2浮点型直接量

[digits][.digits][(E|e)[(+|-)]digits]

例如:3.14,.33333,6.02e23,1.2E-32

1.3算术运算

复杂运算通过作为Math对象的属性定义的函数和常量实现:

Math.pow(2,53)                        //2的53次幂

Math.round(.6)                          //四舍五入

Math.ceil(.6)                              //向上求整

Math.fooor(.6)                           //向下求整

Math.abs(-5)                             //求绝对值

Math.max(x,y,z)                        //返回最大值

Math.min(x,y,z)                         //返回最小值

Math.random()                          //生成一个大于等于0小于1.0的伪随机数

Math.PI                                     //圆周率

Math.E                                      //自然对数的底数

Math.sqrt(3)                              //3的平方根

Math.pow(3,1/3)                        //3的立方根

Math.log(10)                              //10的自然对数

Math.log(100)/Math.LN10         //以10为底100的对数

Math.exp(3)                               //3的三次幂

被零整除在JavaScript中不报错,它返回无穷大(Infinity)或负无穷大(-Infinity)。但是零除以零时没有意义的,这种整除运算结果也是一个非数字值,用NaN表示。无穷大除以无穷大,给任意负数开方运算,不是数字或无法转换为数字的操作数一起使用时都将返回NaN。

1.4时间和日期

Date()构造函数,用来创建表示日期和时间的对象。

var then=new Date(2011,0,1)//2011.1.1
var later=new Date(2011,0,1,17,10,30)//2011.1.1,17:10:30
var now new Date()//当前日期和时间
var elapsed=now-then//日期减法:计算时间间隔的毫秒数
later.getFullYear()//2011
later.getMonth()//0:从0开始记数的月份
later.getDate()//1:从一开始记数的天数
later.getDay()//5:得到星期几,0表示星期天,5表示星期一
later.getHours()//当地时间13
later.getUTCHours()//使用UTC表示小时的时间,基于时区

2文本

字符串是一组由16位值组成的不可变的有序序列,它的长度是其所含16位值的个数,JavaScript中没有表示单个字符的“字符型”,要表示一个16位值,只需将其赋值给字符串变量即可,这个字符串长度为1,空字符串的长度为0.

2.1字符串直接量

在JavaScript中的字符字符串包含单引号和双引号括起来的字符序列。

2.2字符串的使用

将加号(+)运算符用于字符串,表示将两个字符串拼接起来

字符串可以调用的方法:

  var s="hello, world"
  s.charAt(0)//"h",第一个字符
  s.charAt(s.length-1)//"d",最后一个字符
  s.substring(1,4)//"ell",第2~4个字符
  s.slice(1,4)//"ell",第2~4个字符
  s.slice(-3)//"rld",最后三个字符
  s.indexOf("l")//2,字符l首次出现的地方
  s.lastIndexOf("l")//字符l最后一次出现的位置
  s.indexOf("l",3)//在位置3之后首次出现l的位置
  s.split(",")//["hello","world"],分割成字串
  s.replace("h","H")//"Hello, world"
  s.toUpperCase()//“HELLO, WORLD"

2.3模式匹配

JavaScript定义了RegExp()构造函数,用来创建表示文本匹配模式的对象,这些模式称为“正则表达式”。

var text="testing: 1,2,3"
//匹配应该或多个数字的实例
var pattern=/\d+/g

pattern.test(text)//true,匹配成功

text.search(pattern)//9,首次匹配成功的位置

text.match(pattern)//["1","2","3"],所有匹配组成的数组

text.replace(pattern,"#")//"texting: #,#,#"

text.split(/\D+/)//["","1","2","3"],用非数字字符截取字符串

2.4布尔值

这些值会被转换成false:undefined,null,0,-0,NaN,""(空字符串)

其他的值都会转换成true

2.5null和undefined

null是关键字,表示一个特殊值(空值),对null执行typeof预算,结果返回字符串“object”,可以将null认为是一个特殊的对象值,含义是“非对象”

undefined表示值的空缺,它是变量的一种取值,表示变量没有初始化,如果要查询对象属性或数组元素的值时返回undefined,说明这个属性或元素不存在。如果函数没有返回任何值,则返回undefined。

2.6全局对象

  • 全局属性,比如:undefined,Infinity,NaN
  • 全局函数,比如:isNaN(),parseInt(),eval()
  • 构造函数,比如Date(),RegExp(),String(),Object(),Array()
  • 全局对象,比如Math和JSON

2.7包装对象

可以通过 ‘.’ 符号来引用属性值,当属性值是一个函数的时候,称其为方法,通过o.m()来调用对象o中的方法。

var s="hello world"//一个字符串
var word=s.substring(s.indexOf(" ")+1,s.length)//使用字符串属性

但是字符串不是对象,为什么有属性?因为只要引用了字符串s的属性,JavaScript通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法。

和字符串一样,数字和布尔值也具有个字放方法,通过Number()和Boolean()构造函数创建一个临时对象。

var s="test"
var n=1
var b=true
var S=new String(s)
var N=new Number(n)
var B=new Boolean(b)

JavaScript在必要时将包装对象转换成原始值,用“==”等于运算符将原始值和其包装对象视为相等,但“===”全等运算符将它们视为不等。通过typeof运算符可以看到原始值和其包装对象的不同。

2.8不可变的原始值和可变的对象引用

原始值(undefined,null,布尔值,数字,字符串)与对象(包括数组和函数)有着根本区别。

原始值是不可更改的,任何方法都无法更改一个原始值。

var s="hello"//定义应该由小写字母组成的文本
s.toUpperCase()//返回“HELLO”,但兵牧改变s的值

原始值的比较是值的比较,只有在它们值相等时它们才相等,如果比较两个单独的字符串,当且仅当他们的长度相等并且每个索引的字符都相等时,JavaScript才认为他们相等。

对象的比较并非值的比较即使两个对象包含同样的属性和同样的值,他们也不是相等的。各个索引元素完全相等的两个数组也不相等。

//具有相同属性的两个对象
var o={x:1}
var p={x:1}
o===p//false,两个单独的对象永不相等
//两个单独的空数组
var a=[]
var b=[]
a===b//false,两个单独的数组永不相等

将对象称为引用类型,对象值都是引用,对象的比较均是引用的比较,当且仅当他们引用同一个基对象时,他们才相等。

var a=[]
var b=a
b[0]=1//通过变量b来修改引用的数组
a[0]//变量a也会修改
a===b//true,a和b引用同一个数组,因此他们相等

2.9类型转换

10+"objects"//"10objects"
"7"*"4"//28
var n=1="x"//NaN
n+"objects"//"NaNobjects"

《JavaScript权威指南》读书笔记1,js,读书笔记,javascript,开发语言,ecmascript

2.9.1转换和相等性

一个值转换为另一个值不意味着两个值相等,比如:期望使用布尔值的地方使用了undefined,它将会转换为false,但并不表明undefined==false,JavaScript运算符和语句期望使用多样化的数据类型,并可以相互转换。

2.9.2显式类型转换

除了null和undefined之外的任何值都具有toString()方法,这个方法执行结果;通常和String()方法返回结果一致,同样需要主要的是,如果试图把null或undefined转换为对象,会抛出一个类型错误,Object()函数在这个情况下不会抛出异常:它仅简单的返回一个新创建的空对象。

类型转换管用法:

x+""        //等价于String(x)

+x          //等价于Number(x),也可以写成x-0

!!x          //等价于Boolean(x)

Number类定义的toString()方法可以接受表示转换基数的可选参数,如果不指定次参数,转换规则阿静是基于十进制。同样可以转换为其他进制数

var n=17
n.toString(2)        //"10001"
"0"+n.toString(8)    //"021"
"0x"+n.toStirng(16)  //"0x11"

处理Number类转换为字符串类型:

toFixed()根据小数点后的指定位数将数字转换为字符串(四舍五入)

toExponential()使用指数计数法将数字转换为指数形式的字符串

toPrecision()根据指定的有效数字位数将数字转换为字符串,如果有效数字少于数字整数部分的位数,则转换成指数形式。

parseInt()函数和parseFloat()函数。如果字符串前缀是‘0x’或者‘0X’,会将其解释为十六进制数。这两个函数都会跳过任意数量的前导空格,尽可能解析到更多的数字字符,并忽略后面的内容。如果第一个非空格字符是非法的数字直接量,将最终返回NaN

parseInt()也可以接受第二个可选参数,指定数字转换的基数,合法的取值范围是2~36.

parseInt("    -3 blind mice")//-3
parseFloat("3.14 sdf")//3.14
parseInt("0xFF")//255
parseFloat(".1")//0.1
parseInt(".1")//NaN,整数不能以‘.’开始
parseInt("$72.25")//NaN,整数不能以‘$’开始

//得到的值都是十进制
parseInt("11",2)//3
parseInt("ff",16)//255
2.9.3对象转换为原始值

对象到布尔值的转换:所有的对象(包括数组和函数)都转换为true,对于包装对象也是一样的:new Boolean(false)是一个对象而不是一个原始值,将转换为true。

数组类toString()方法讲每个数组元素转换为一个字符串,并在元素之间添加逗号后合并成结构字符串;函数类的toString()方法返回这个函数的实现定义的表示方式;日期类的toString()方法返回来应该可读的(可被JavaScript解析的)日期和时间字符串;RegExp类定义的toString()方法将RegExP对象转换为表示正则表达式直接量的字符串。

[1,2,3].toString()//"1,2,3"
(function(x) { f(x); }).toString()//"function(x) {\n f(x);\n}"
/\d+/g.toString()//"/\d+/g"
new Date(2010,0,1).toString()//"Fri Jan 01 2010 00:00:00 GMT-0800 (PST)"

另一个转换对象的函数是valueOf(),默认的valueOf()方法简单的返回对象本身,而不是返回一个原始值。

var d=new Date(2010,0,1)//2010年1月1日
d.valueOf()//1262332800000

var now=new Date()

typeof(now+1)//"string"

typeof(now-1)//"number"

now=now.toString()//true

now>(now-1)//true

2.10变量声明

JavaScript变量可以是任意数据类型,例如,在JavaScript中首先将数字赋值给一个变量,随后再讲字符串赋值给这个变量,是合法的:

var i=10
i="ten"

函数作用域和声明提前

JavaScript的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的,这意味着变量在声明之前就可以使用。文章来源地址https://www.toymoban.com/news/detail-822728.html

到了这里,关于《JavaScript权威指南》读书笔记1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅

    Node.js作为一个基于Chrome V8引擎的JavaScript运行时环境,已经成为现代web开发中不可或缺的重要工具之一。它的出现极大地扩展了JavaScript的应用范围,使得开发者可以利用同一种语言来编写前端和后端的代码,从而实现全栈开发。Node.js具有非阻塞I/O、事件驱动的特性,使得它能

    2024年04月10日
    浏览(40)
  • 基于【ESLint+JavaScript Standard Style】标准的VUE/JS/html风格指南

    本规范是适用于小仙男团队及前端团队所搭建的各种前端框架代码的通用风格规范指南; 使用时,请遵循指南细则进行代码风格约束,并在提交之前确保进行代码风格的修正操作; 本规范参考WEB行业知名的JavaScript Standard Style 规范指南。并将在后续使用过程中,逐步进行符合

    2023年04月13日
    浏览(34)
  • 掌握 JavaScript:从初学者到高级开发者的完整指南之JavaScript对象(二)

    可以大体分页3大类: 第一类:基本对象,我们主要学习Array和JSON和String 第二类:BOM对象,主要是和浏览器相关的几个对象 第三类:DOM对象,JavaScript中将html的每一个标签都封装成一个对象 1.1.1 基本对象 1.1.1.1 Array对象 语法格式 Array对象时用来定义数组的。常用语法格式有如下

    2024年02月07日
    浏览(46)
  • 【Anime.js】——JavaScript动画库:Anime.js——学习笔记

    目录 一、搭建开发环境  二、基本功能和使用 开始制作动画 动画属性 三、anime.stagger——交错动画 四、timeline——时间轴  五、控制、回调与助手 一、控制  二、回调 三、助手 六、easings——动画运动曲线 七、SVG动画 官网定义: anime.js 是一个简便的JS动画库,用法简单而

    2024年02月01日
    浏览(33)
  • HTML+CSS+JS 学习笔记(三)———Javascript(中)

    🌱博客主页:大寄一场. 🌱系列专栏:前端 🌱往期回顾:HTML+CSS+JS 学习笔记(三)———Javascript(上) 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注 目录  JavaScript中的函数 函数的定义和调用 函数的定义  函数的调用 嵌套函数  递归函数  变量的作用域 全局变量和局部

    2024年02月06日
    浏览(69)
  • 【JS笔记】JavaScript语法 《基础+重点》 知识内容,快速上手(四)

    BOM(Browser Object Model): 浏览器对象模型 其实就是操作浏览器的一些能力 我们可以操作哪些内容 获取一些浏览器的相关信息(窗口的大小) 操作浏览器进行页面跳转 获取当前浏览器地址栏的信息 操作浏览器的滚动条 浏览器的信息(浏览器的版本) 让浏览器出现一个弹出

    2024年01月18日
    浏览(39)
  • 掌握 JavaScript:从初学者到高级开发者的完整指南(一)

    html完成了架子,css做了美化,但是网页是死的,我们需要给他注入灵魂,所以我们需要学习JavaScript,这门语言会让我们的页面能够和用户进行交互。 同样,js代码也是书写在html中的,那么html中如何引入js代码呢?主要通过下面的2种引入方式: 第一种方式 :内部脚本,将

    2024年02月07日
    浏览(50)
  • 掌握 JavaScript:从初学者到高级开发者的完整指南(三)

    BOM的全称是Browser Object Model,翻译过来是浏览器对象模型。也就是JavaScript将浏览器的各个组成部分封装成了对象。我们要操作浏览器的部分功能,可以通过操作BOM对象的相关属性或者函数来完成。例如:我们想要将浏览器的地址改为 http://www.baidu.com ,我们就可以通过BOM中提供的

    2024年02月06日
    浏览(46)
  • [从零开发JS应用] 如何在VScode中配置Javascript环境,常见的调试方法有哪些?

    记录环境配置:本文配置的环境主要针对单独JS文件的断点调试,主要是为了调试LeetCode里面的代码。 首先在官网下载对应的版本:https://nodejs.org/en/ 开始安装,可以自定义选择安装路径。 这里 选择Add Path ,系统变量会自动设置,但是用户变量并没有自动设置,需要的话可以

    2024年02月04日
    浏览(43)
  • PDF.js - 免费开源的 JavaScript 读取、显示 PDF 文档的工具库,由 Mozilla 开发并且持续维护

    最近新项目需要处理 PDF,研究了 PDf.js 之后觉得很不错,于是写篇文章推荐给大家。 PDF.js 的功能和它的名字一样简单,是一个使用 HTML5 技术来让前端网页支持读取、解析和显示 PDF 文档的 JS 工具库。这个项目由大名鼎鼎的 Mozilla 组织开发并且更新维护着,没错,就是那个开

    2024年01月21日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包