JS基础知识学习笔记
解释型语言
javascript
,php
,python
JS诞生于1995年,网景公司员工布兰登·艾奇发明,最初叫livescript,为了曾java热度,改名为javascript。
Js是世界上使用的最多的脚本语言,特点:单线程
2011年 node.js诞生,使js能开发服务器端程序。
javascript的组成
- ECMAScript js的语法标准,包括变量,表达式,运算符,函数,if,for语句
- DOM document object model 文档对象模型,JS操作页面元素的api
- BOM 浏览器对象模型
ECMAScript不是一门语言,而是一个标准。规定了JS的编程语法和基础核心知识,所有浏览器厂商需要共同遵守的一套js语法工业标准。
2015年发布了ECMAScript6版本。语言能力更强,包含很多新特性,但要考虑浏览器的兼容性问题。
浏览器默认从上至下解析网页,我们将js代码写在body标签内,而不是head标签中,因为这样的js是无效的,标签元素在此时还没来得及加载,自然也无法操作元素。
JS严格区分大小写。
常量 const
变量 let
ES6之前 变量叫var,弱类型语言静态数据
:以文件的形式存储在硬盘上,比如文档,照片,视频等,永久性数据动态数据
: 内存中的数据,访问速度快
JS有8种数据类型
基本数据类型 String
,Number
,Biging
,Boolean
,Null
,undefined
,Symbol
引用数据类型 Object
内置对象 Function
,Array
,Date
,Regexp
,Error
等都属于Object
类型
数据类型之间最大的区别:
基本数据类型,参数赋值的时候传数值
引用数据类型,参数赋值的时候传地址
比较字符串大小时,是一位一位进行比较,顺序从左到右。如果一样大,则比较下一位。
“56” > “123”
因此,比较两个字符串数字时,要先转换类型
==
符号会做隐士转换,将不同类型的数据类型,先转为相同类型再比较。===
不仅判断值相等,还要判断类型相同
函数
- 形参与实参的个数可以不同,调用函数时,解析器不糊检查实参的数量。
- 如果实参个数>形参个数,则末尾的实参是多余的,不会被赋值,因为没有形参接收。
- 如果实参个数<形参个数,则末尾的形参是多余的,值是undefined
- 函数中不写return,也会返回undefined
- 如果一个函数作为一个对象的属性保存,那么这个函数称为这个对象的方法。
- 函数内的arguments是一个类数组对象,里面存储了接收到的实参列表。
递归函数
一个函数内部调用这个函数自身。
作用域
全局作用域是直接编写在script标签中的js代码,在页面打开时创建,在页面关闭时销毁。
全局作用域中有一个全局的window
对象,他代表浏览器窗户,由浏览器创建,我们可以直接使用。
创建的变量都会作为window的对象属性保存。比如在全局作用域写 const a = 100; 这里的a等价于window.a
;
创建的函数会作为window对象方法保存。
作用域的关系
内部作用域可以访问外部作用域变量,外部不能访问内部。
无论是在函数内,还是函数外,如果变量未经声明就赋值(意思是不加 var、let,const),这个变量是全局变量。
任何变量,如果未经声明就赋值,此变量是属于window的属性。
函数内部可以访问全局变量和局部变量
函数外部只能访问全局变量
当函数执行完毕后,本作用域的的局部变量会销毁。
闭包的表现形式
- 将一个函数作为另一个函数的返回值;
- 将函数作为实参传递给另一个函数调用
闭包的作用
- 延长局部变量的声明周期。
- 让函数外部可以操作函数内部的数据