js基础

Posted GetPower

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js基础相关的知识,希望对你有一定的参考价值。

javascript基础

常说的js包括三个部分:dom(文档document)、bom(浏览器对象browser)、ESMAScript(语法)。js是esmascript的实现和扩展。

ESMAScript数据类型

数据类型

七种数据类型:string,number,boolean,null,undefined,symbol (ECMAScript 2015新增),object。

六种基本数据类型(原始类型):string,number,boolean,null,undefined,symbol (ECMAScript 2015新增)。

三种值类型:number、string、false(注意是小写)。

一种引用类型:object。

 

复杂类型(预定义函数)

数据类型就上面几种。

为了方便使用需要函数function。一个函数声明function。function就是声明一个代码块,使用了function的都是全局函数,会优先执行,即你先使用后声明也行(被称为函数提升)。

为了方便使用,需要一些预定义的函数(称之为复杂类型)。Array(),Bollean(),Date(),Number(),String(),RegExp,Events。

object是所有复杂类型的父类型。复杂类型是esmascript中通过function预定义的一些函数。

console.log(typeof Number)
// function                          

字面量(通过语法构造字面量)

使用时也不会一直调用函数来声明一个对象(或者数组之类的)。一般使用语法快速构造一个对象。字面量其实我们经常使用

var a=false; //布尔字面量,布尔值常量
var b=[];     //数组字面量。数组
var c={};    //对象字面量。对象

字面量是由语法表达式定义的常量;或,通过由一定字词组成的语词表达式定义的常量。

提取主谓宾,就是:字面量是常量

字面量参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Grammar_and_types#%E6%95%B4%E6%95%B0(Integers)

 DOM

 1、事件委托、事件冒泡和事件捕获

事件委托就是用了事件冒泡,委托父级监视和执行。当子元素符合条件就执行,避免多次添加,避免新添加子元素时添加。

JS常用方法

  1. esmascript中数字既可以表示 32 位的整数,还可以表示 64 位的浮点数,1字节是8个二进制位(1byte=8bit)。
  2. 字符串转换成数字。parseInt(x)、parseFloat(x)、Math.abs(x)配合Math.sign(x)、~~(x)、-0、Number(x)。前两种方法只是对字符串首部数字的截取,即部分是一个数字有时也可以转换成功,如果不保证字符字符串是数字的话不要使用;Math函数的话对于不是数字的字符串返回NAN;~~(x)的方法其实利用了对数据的按位取反,对其两次取反转换成32位二进制数(esmascript中数字均是以32位二进制数保存的)如果是数字字符串(或者数字)的话直接转换成数字,不是的话转化成0,因为只能转换成32位二进制数所以只能转化成整数;-0是利用了弱语言的特性,是数字字符串隐式转换成数字,不是数字字符串返回NAN;Number()就是提供的复杂类型的函数,不是数字类型的字符串返回NAN;
  3. 是否整数(这里讨论的前提是首先是一个数字或者是数字字符串)。%取余、Math.Floor、~~(x)、Number.isInteger、是否包含小数点。整数%取余为0:x%1==0;只有整数向下取整还是自己Math.Floor;~~(x)本身就是转换成整数,看看是否与自己相等;Number.isInteger是es6新方法兼容性有问题不建议使用。
  4. 是否数字。isNan(x)
  5. number保留位数。number.toFixed()
  6. 获取类型typeof
  7. 6个在判断时会自动转换成false的值。null、undefined、0、false、NAN、""。所以在很多时候,判断一个变量有没有值的情况下不必 if(x==undefined),直接 if(x) 就行了
  8. undefined和null区别。undefined是不知道想要什么(如变量未声明),null是只要想要什么但是没有得到(没有赋值)。
  9. JSON字符串和js对象转化。JSON.stringify(x)或者JSON.parse(x)。
  10. 数组array的常用四个方法。push()、jion()、concat()、sort()
  11. 正则的img。正则中有/i /m /g 。/i 是忽略大小写的匹配,/m是多个匹配,/g 是多个匹配。
  12. string的基本方法。split、replace、indexof、concat。indexof用来查找某个字符串(是字符出不是字符)在字符串中的起始位置,没有返回-1。replace(subStr/regexp,replaceStr)用来替换字符串或者正则表达式。如果替换replace(subStr,replaceStr)的话只能替换一个,但是使用正则replace(/regexp/g,replaceStr)可以替换多个。
  13. forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数array.forEach(function(currentValue, index, arr), thisValue)。在没有完全循环数组元素之前是无法return或者跳出循环的。
  14. js函数上的参数多少只是为了直接命名,其实传递多少个参数都行,不会报错,而的arguments可以获取函数内部参数。
  15. js中字符串占用的字节等于字符串长度+1,因为每个字符串都有一个结束字符表示字符串的中止,如"xyz"长度为3的字符串其实占用4个字节。

  16. 颜色的值0~256就是两位16进制00~FF。

  17. 在内存中,值类型变量a直接存储值,操作值类型变量a相当于直接操作内存中的字节,引用类型变量a的内存包括两块,一块是大小可变的区域用来存储变量a实际的数据,一块大小固定的区域存储刚才大小可变区域的地址空间。值类型变量直接存储数据,引用类型变量存储数据的空间地址。要常画变量的内存空间逻辑图。
  18. js中的对象就是键值对集合。
    js是面向对象的多范式编程语言。(多范式,对象,过程,泛型,函数,四种编程)
    js面向对象的三个特性:抽象,封装,继承。
    js中没有明确的继承语法,所以很多实现继承的方法。

  19. ie标准下的兼容写法
  20. a标签被称为锚(anchor)
  21. 数组的sort方法可以进行升序或者降序排列。可以传递一个函数,理应有两个参数a,b。返回a-b升序,返回b-a降序。

以上是关于js基础的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

js代码片段: utils/lcoalStorage/cookie

JS代码片段:一个日期离现在多久了

js常用代码片段(更新中)

js常用代码片段

Chrome-Devtools代码片段中的多个JS库