【Mark】JavaScript

点击目录传送ฅʕ•̫͡•ʔฅ

JavaScript简介

  • JavaScript是世界上最流行的脚本语言
  • 在Web世界里,目前只有JavaScript能跨平台、跨浏览器驱动网页,与用户交互。
  • 由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Brendan Eich这哥们在两周之内设计出了JavaScript语言。你没看错,这哥们只用了10天时间。
  • 事实上JavaScript除了语法上有点像Java,其他部分基本上没啥关系。
  • ECMAScript是一种语言标准,而JavaScript是网景公司对ECMAScript标准的一种实现,是网景的注册商标。
  • 如果你遇到ECMAScript这个词,简单把它替换为JavaScript就行了。

快速入门

  • JavaScript的数据类型
    • Number(不区分整型和浮点数)
    • 字符串""''
    • 布尔值!是将true变成false的运算符)
    • 比较运算符,第一种是==比较,它会自动转换数据类型再比较;
      第二种是===比较,它不会自动转换数据类型,数据类型不一致,返回false,一致,再比较。
      不要使用==比较,始终坚持使用===比较。
      NaN这个特殊的Number与所有其他值都不相等,包括它自己
      唯一能判断NaN的方法是通过isNaN()函数
      浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值,这不是JavaScript的设计缺陷
    • nullundefined,JavaScript的设计者希望用null表示一个空的值,而undefined表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用null。undefined仅仅在判断函数参数是否传递的情况下有用
    • 数组,①直接用[]创建数组 ②用Array()函数
      出于代码的可读性考虑,强烈建议直接使用[]
    • 对象,是一组由键-值组成的无序集合,键都是字符串类型,值可以是任意数据类型
    • 变量,在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$和_的组合,且不能用数字开头,可以用中文,但是,请不要给自己找麻烦。

  • 缩进,通常是4个空格
  • 安装VSCode
  • var这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java语言
  • 如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量
  • strict模式,强制通过var申明变量,否则报错,在JavaScript代码的第一行写上'use strict';启用该模式

  • 字符串
    • 多行字符串,用反引号`…`表示(ES6新增)
    • 模板字符串,用${name}表示,可以自动替换字符串中的变量(ES6新增,注意,name所表示的是一个变量名)
    • 操作字符串
      • 获取位置用索引,类似数组,例如s[13]; // undefined 超出范围的索引不会报错,但一律返回undefined
      • 特别注意字符串不可变
      • 如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果
      • toUpperCasetoLowerCaseindexOf(指定字符串位置)、substring(返回指定索引区间的子串,注意[ , ))、

  • 数组
    • 大多数其他编程语言不允许直接改变数组的大小,越界访问索引会报错。然而,JavaScriptArray却不会有任何错误,它会修改Array的大小
    • 常用方法
      • indexOf() 对应 String的indexOf()定位
      • slice() 对应 String的substring(),如果不给slice()传递任何参数,它就会从头到尾截取所有元素。
      • push()pop()在数组末尾操作,添加或删除若干元素
      • unshift()shift(),同上,在数组头部操作
      • sort()排序reverse()反转
      • splice()方法是修改Array的 “万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素,方法返回被删除的元素
      • concat()连接
      • join()每个元素都用指定的字符串连接起来,然后返回连接后形成的字符串
    • 多维数组:var arr = [[1, 2, 3], [400, 500, 600], '-'];

  • 对象
    • 键必须是字符串(键又名,Key、属性名)
    • 如果属性名包含特殊字符(无效的变量),就必须用''括起来,用['xxx']来访问
    • key是一个合法的变量名时,Object['key']Object.key作用一样
    • 由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性
    • 判断一个属性存在:key in object
    • 判断一个属性是否是自身拥有的:object.hasOwnProperty(key)

  • 条件循环和判断
    • JavaScript 把nullundefined0NaN和空字符串''视为false,其他值一概视为true
    • for循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break语句退出循环,否则就是死循环
    • Array 数组也是一个对象,而它的每个元素的索引被视为对象的属性

  • Map、Set 和 iterable
    • 初始化Map需要一个二维数组,或者直接初始化一个空Map(用.set()添加key-value
    • Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的元素(用.add()添加key
    • delete删除元素
    • for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称
    • for ... of循环则完全修复了这些问题,它只循环集合本身的元素
    • iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数
    • SetArray类似,但Set没有索引,因此回调函数的前两个参数(valuekey)都是元素本身
    • JavaScript函数调用不要求参数必须一致

函数

  • 函数就是最基本的一种代码抽象的方式
  • 如果没有return,函数执行完毕后也会返回结果,只是结果为undefined
  • 在JavaScript中函数是一个对象,函数名可以视为指向该函数的一个变量
  • 匿名函数,没有函数名,定义时var abs = function (x) {...};
  • 因为函数调用时对参数没有要求,所以多传参少传参都不会报错
发布了77 篇原创文章 · 获赞 160 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43763494/article/details/103943356