其他分享
首页 > 其他分享> > js红宝书学习笔记(一)

js红宝书学习笔记(一)

作者:互联网

第一章 什么是JS

一、js是渗透到浏览器窗口及其内容的方方面面

二、完整的JS包含以下几个部分
1、核心:ECMAScript:是对实现规范描述的所有方面的一门语言的称呼,或一种标准
ES6包含最重要的一批增强特性
2、文档对象模型:DOM(document object model):API,将页面抽象成一组分层节点,进行增删改
3、浏览器对象模型:BOM:API,用于访问和操作浏览器的窗口和子窗口,如弹出新窗口、alert、confirm等方法、navigator、location等窗口对象

第二章 html中的js
1、可选属性:src:外部文件,包含要执行的代码。type:值始终是'text/javascript'
2、代码中不能出现字符串'',若出现只需转义字符:'</script>'
3、script标签常放在页面内容后面,使页面先完成渲染
4、通常建议将javaScript代码放在外部文件,便于维护

第三章 语言基础
一、语言特性:
1、语法:类似Java、perl
2、区分大小写
3、严格模式:一种不同的JS解析和执行模型,ES3不规范的写法会被处理,又不会破坏ES3语法。使用方法是在脚本开头加上'use strict'。也可以指定一个函数在严格模式下执行,需在函数体闭包内第一行加上'use strict'
4、语句以分号结尾

5、变量声明:var可以在ES任何版本中使用,let、const只能在ES6以上版本使用
(1)var:声明但不初始化变量时,默认值为undefined。
①作用域:函数作用域。声明的变量会成为包含它的函数的局部变量。而在函数内省略var,该变量就变成全局变量(不建议)
②声明提升:声明的变量会自动提升到函数作用域顶部。相当于在顶部添加'var xxx',默认值为undefined
③全局声明:var在全局作用域中声明的变量会成为window对象的变量
④for循环:定义的迭代变量会渗透到循环体外部,先迭代完才执行循环体内部代码
(2)let:声明但不初始化变量时,默认值为undefined。
①作用域:块作用域。块作用域是函数作用域的子集,因此适用于var的作用域限制同样适用于let。
②不能在同一块作用域内重复声明同个变量
③暂时性死区(TDZ):由于let没有变量提升,在let声明之前调用变量,JS会注意到后方的let声明,但不能引用其变量,会跑出referenceError
④由于存在块作用域,不能用if条件声明
⑤for循环:定义的迭代变量仅限于for循环体内部
(3)const:声明时必须同时初始化变量,且变量值不能修改!
①作用域:块作用域。
②const引用的是一个对象时,可以修改这个对象的属性值
(4)声明风格:
①不使用var;②先const后let

6、数据类型
(1)typeof操作符,返回'undefined'、‘null’、'boolean'、'number'、'string'、'object'、'function'、'symbol'(ES6新增)
可用来区分函数和其他对象。要注意:typeof null输出object,因为null可以看作对空对象的引用
(2)Number类型:
①浮点值的算数计算不如整数准确。如0.1+0.2不等于0.3
②NaN:本要返回数值的操作失败了。用0作除法都会返回NaN。
③isNaN():判断某个值是否”不是数值“
④数值转换:Number(‘对象’)方法,可用于任何数据类型,当对对象进行转换时,其实是调用valueOf()方法;parseInt()方法,转换成整数时优先考虑此方法;parseFloat()方法始终忽略字符串开头的零,只解析十进制数。
(3)String类型:
①length属性返回字符串长度
②对象.toString()常用于number、boolean、object等转换成字符串,null、undefined没有这个方法。
③String()方法调用toString()方法,String(null)输出null,String(undefined)输出undefined,可用于分辨一个值为null还是undefined

(4)symbol类型:
①symbol实例有唯一性,用来保护属性不被覆盖或改变,创建方法为直接调用Symbol()方法:let a=Symbol()
②不能和new关键字一起用来构造函数,避免创建符号包装对象。实在想包装,可以先用object()函数包装symbol实例

(5)object类型:一组数据和功能的集合。创建方法:let a=new Object()
① 每个object实例都有如下属性和方法:constructor:指向构造函数;hasOwnProperty(propertyName):判断是否存在给定属性;toLocalString()、toString()返回对象的字符串表示;valueOf()返回对象的字符串、数值或布尔值表示

(6)一元操作符:
①自增/自减:前缀:++a,--a:先运算再使用;后缀:a++,a--:先使用后运算
②一元加减:对于数值没影响,对非数值,如字符串,则相当于调用valueOf()方法,将其转换为Number类型
③指数操作符:3的2次方:Math.pow(3,2),或 3**2(ES7新增)
④加减运算符:需注意只要有一个数是字符串,其他操作数均会转换成字符串
⑤相等操作符:nullundefined:true;NaNNaN:false ; "NaN"==NaN:false

(7)for语句:for-in和for-of
①for-in:枚举对象中的非符号键属性,但不能保证返回属性的顺序。推荐使用const
②for-of:遍历可迭代对象的元素

标签:变量,作用域,笔记,js,对象,let,红宝书,声明,undefined
来源: https://www.cnblogs.com/henryLee0705/p/14661932.html