JS基础

2025-07-01  本文已影响0人  Aquarius_Space

立即执行函数

闭包

JS 诞生于1995年,它的出现主要是用来处理网页中的验证。由网景公司发明,起初命名为Livescript,后台由Sun公司介入更名javascript. 为了确保不同浏览器运行的javascript,几个公司共同定制js标准 ECMAScript.

alert('hello') // 控制浏览器弹出警告框
document.write() // 在页面中输出一个内容
console.log('hello') // 向控制台输出一个内容

  1. js中严格区分大小写

  2. 字面量都是一些不可改变的值,可以直接使用,但一般不会直接使用字面量

  3. 变量可以保存字面量,且变量的值是可以被改变的,变量更加方便我们使用,很少直接使用字面量

  4. 标识符: 变量名,函数名,属性名

  1. 数据类型:
  1. Number.MAX_VALUE
  1. Number.MIN_VALUE
  1. NaN
image.png
  1. 在js中整数的运算基本可以保证精确, 如果用js进行浮点运算,可能得到一个不精确的结果,所以千万不要用js进行对精确度要求较高的运算。

  2. Null

  1. undefined
image.png
  1. 强制类型转换
  1. 进制
  1. 运算符: 可以对一个或多个值进行运算,并获取运算结果

相等运算符 ==(会先做类型转换)===(不会做类型转换)


image.png

条件运算符 ?:

image.png
  1. Unicode
  1. break和continue

可以为循环语句创建一个label,来标识当前的循环
label: 循环语句
使用break语句时,可以在break后跟着一个label,这样break会结束指定的循环,而不是最近的。

outer:
for (var i = 0; i < 5; i++) {
console.log('外层循环' + i);
  for (var j = 0; j < 5; j++) {
      break outer;
      console.log('内层循环' + j);
  }
}
image.png

console.time('计时器名字') 可以开启一个计时器
console.timeEnd('计时器名字') 可以停止一个计时器

  1. 对象
  • 由ES标准中定义的对象,在任何的es的实现中都可以使用
  • 比如Math, String, Number, Boolean, Function, Object
  • 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
  • 比如BOM, DOM
  • 由开发人员自己创建的对象
  • 添加属性 对象.属性名=属性值
  • 删除属性 delete 对象.属性名
  • 对象的属性名不强制要求遵守标识符的规范, 如果要使用特殊的属性名,不能使用.的方式来操作。 需要使用 对象['属性名']= 属性值
  • in 运算符: 可以通过该运算符检查一个对象中是否含有指定的属性,如果有则返回true, 没有则返回false. '属性名' in 对象
  1. 基本数据类型和引用数据类型

基本数据类型的值直接在栈内存中存储。
值与值之间是独立存在,修改一个变量不会影响其他的变量。


image.png

每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址(对象的引用), 当一个通过一个变量修改属性时,另一个也会受到影响。


image.png
image.png

当比较两个基本数据类型的值时,就是比较值。
而比较两个引用数据类型时,比较的对象的内存地址。
如果两个对象一模一样,但地址不同,也会返回false

  1. 对象字面量

var obj = {};
使用对象字面量,可以在创建对象时,直接指定对象中的属性
var obj = {name:'name1', age: 22}

  1. 函数

函数也是一个对象。封装一些功能,在需要的时候调用。

函数也可以称为对象的属性,如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法,调用函数就是调用对象的方法。

  1. 立即执行函数: 函数执行完, 立即被调用,只执行一次

    (function(){
    alert('匿名函数');
    })();
    
  2. 枚举对象中的属性
    使用for…in语句
    for(var 变量 in 对象){}

    var obj = {
    name: 'test',
    age: 10
    }
    for (var i in obj) {
    console.log(i + ':' + obj[i]);
    }
    
  3. 作用域

  • 在页面打开时创建,页面关闭时销毁
  • 有一个全局对象window,代表的是浏览器的窗口,由浏览器创建,可直接使用
  • 创建的全局变量都会作为window对象的属性保存
  • 创建的函数都会作为window对象的方法保存
  • 变量的声明提前: 使用var声明的变量,会在所有代码执行之前被声明(但不会赋值),但如果声明变量时不用var,则变量不会被声明提前。

函数的声明提前:使用函数声明形式创建的函数 function 函数(){} 会在所有代码执行之前就被创建。使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用。

  • 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁, 每次调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的。在函数作用域中可以访问全局作用域的变量。
  • 在函数作用域也有声明提前的特性。使用var关键字声明的变量,会在函数中所有的代码执行之前被声明。
  1. this
  1. 以函数的形式调用时, this永远都是window

  2. 以方法的形式调用时,this就是调用方法的那个对象。

  3. 构造函数

  1. 立刻创建一个新的对象
  2. 将新建的对象设置为函数中的this
  3. 逐行执行函数的代码
  4. 将新建的对象作为返回值返回

this的情况

  1. 原型对象
image.png
  1. toString()

28.垃圾回收

  1. 数组
  1. 数组方法

去重:


image.png
  1. call(), apply()
  1. arguments
  1. 函数的上下文对象 this

  2. 封装实参的对象 arguments

    • arguments是一个类数组对象,可以通过索引来操作数据,可以获取长度
    • 在调用函数时,传递的实参都会在arguments中保存
    • arguments.length可以用来获取实参的长度,即使不定义形参,也可以通过arguments来使用实参
    • 还有一个属性叫callee, 这个属性对应一个函数对象,就是当前正在指向的函数的对象
  3. Date

  4. Math

Math.PI - 圆周率
abs() - 计算一个数的绝对值
ceil() - 可以对一个数进行向上取整
floor() - 可以对一个数向下取整
round() - 四舍五入取整
random() - 用来生成[0, 1)之间的随机数, 生成一个x-y之间的数 Math.round(Math.random()*(y-x)+x)
max() - 获取多个数中最大值
min() - 获取多个数中最小值
pow(x,y) - x的y次幂

  1. 包装类
    在js中,有3个包装类,通过这三个包装类可以将基本数据类型的数据转换为对象
    String() - 将字符串转换成String对象
    Number() - 将数字转换成Number对象
    Boolean() - 将boolean转换成Boolean对象
    实际应用中不推荐使用
  1. 字符串相关方法
    在底层字符串是以字符数组的形式保存的。


    image.png
image.png
  1. 正则表达式

var reg= new RegExp('a'); 检查一个字符串中是否含有a
reg.test('abcdasd') -> true

使用字面量创建正则表达式
var 变量 = /正则表达式/匹配模式

检查一个字符串中是否有a或b, 使用 | 表示或者的意思
reg = /a|b/

检查一个字符串中是否有字母 [ab] == a|b
reg = /[A-z]/

检查一个字符串中是否含有abc,adc,aec
reg = /a[bde]c/

[^] 除了
reg = /^[ab]/
reg.test('abc') --- true

  1. 字符串和正则相关的方法

量词

  1. DOM
    Document Object Model: 文档对象模型, JS中通过DOM对html文档进行操作。
    文档: 整个的html网页文档
    对象: 将网页中的每一个部分都转换成一个对象
    模型: 使用模型表示对象之间的关系,方便获取对象

节点(Node): 网页中的每一个部分都是节点

window.onload: 整个页面加载之后再触发事件

获取元素当前显示的样式: 元素.currentStyle.样式名 (只支持IE6),其他浏览器可以使用getComputerdStyle(), window方法,可直接使用。需要两个参数,一个是样式元素,另一个是伪元素,一般传null

40.JSON - JavaScript object Notation
json是一个特殊格式的字符串,这个字符串可以被任意语言所识别,可以转换为任意语言中的对象。在开发中主要用来数据交互。json和js对象格式一样,只是json字符串中的属性名必须加双引号。

json分类: 对象,数组
json中允许的值:字符串,数值,布尔,null,对象,数组

将json字符串转换成js中的对象 JSON.parse();
将js对象转换成json字符串 JSON.stringfy();
JSON在IE7以下浏览器中不支持

eval(): 可以用来执行一段字符串形式的js代码,并将执行结果返回
如果使用eval()执行的字符串中含有{},它会将{}当成是代码块,如果不希望将其当成代码块解析,则需要在字符串前后各加一个()性能比较差,同时还要安全隐患
虽然功能强大,但不建议在开发中使用,
eval("alert("hello")")

上一篇 下一篇

猜你喜欢

热点阅读