JavaScript基础笔记

本文详述JavaScript的基础知识,包括变量、数据类型、对象、数组、函数、作用域等核心概念,以及面向对象编程和JSON格式的应用。深入探讨了JavaScript的变量命名规范、对象创建方式、数组操作、正则表达式、函数表达式和闭包等高级特性,为读者提供全面的JS学习指南。
摘要由CSDN通过智能技术生成

JavaScript简介

JavaScript已经成为一门功能全面的编程语言,能够处理复杂的计算和交互,拥有了闭包,匿名函数,甚至元编程等特性。

面向对象编程 —— Object Oriented Programming,简称 OOP ,是一种编程开发思想。
它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。

js是什么?

是一门解释性的语言
是一门脚本语言
是一门弱类型语言
是一门基于对象的语言
是一门动态类型的语言:
1、代码(变量)只有执行到这个位置的时候,才知道这个变量中存储的是什么。
2、对象没有什么,只有点了,通过点语法,那么就可以为对象添加属性或方法。

js三部分:

  • ECMAScript标准------js的基本语法
  • DOM------Document object Model 文档对象模型
  • BOM------Brower object Model 浏览器对象模型

js可以做的事:

  1. 网页特效;
  2. 服务端开发(Node.js);
  3. 命令行工具(Node.js);
  4. 桌面程序(Electron);
  5. App(Cordova);
  6. 控制硬件-物联网(Ruff);
  7. 游戏开发(cocosd-js);

规范

script标签一般是放在body的标签的最后,有时候会在head标签中。
变量名命名规范:一般都是小写;如果多个单词,第一个单词的首字母是小写的,后面的所有的单词的首字母都是大写的,这种命名方式称为:驼峰命名法。
项目里必须要有 //单行注释; /多行注释/
严格模式:在顶部添加"use strict" 。
最好把用完后不用的对象赋值为null,或者delete此对象。
函数内默认里面有一个name属性,值为函数名,只读。因而最好变量中不要使用name来命名属性,否则会出现未知错误。
函数中有一个caller属性,显示当前函数调用者。

了解

|-虽然语句结尾的分号不是必需的,但建议任何时候都不要省略它。
|-删除多余的空格来压缩ECMAScript。
|-arguments对象可以与命名参数一起使用,但与之一起使用,函数要么不写形参,若写形参就必须传入相同个数的实参,反之未被传入的形参等于undefined。

变量

声明变量:(区分大小写)

var 变量名;

js中的原始数据类型:

number,string,boolean,null,undefined,object。
两个特殊数值:①Infinity ②NaN
变量声明了,没有赋值,结果是undefined;或者函数没有明确返回值,但是接收了也为undefined。

获取变量的数据类型:

	typeof 变量名

Number类型

在js中表示进制:

​ 1.八进制:用0表示,后面接的时进制后的数字

var num = 012;	// 输出为10

​ 2.十六进制:用0x表示

var num = 0x1a; // 输出为26

isFinite()函数

判断参数是否位于最小和最大数值之间时会返回true。

isNaN()函数

接收一个参数,判断参数是否可以转换为数值。

·转数字:

parseInt(numString, [进制]);
parseFloat(numString); //只解析10进制值

·转String:

String(value);
toString([进制]);	// 不能对null,undefined操作

Object类型

Object的每个实例都具有下列属性和方法:

  • constructor:保存着用于创建当前对象的函数。
  • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在。
  • isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型。
  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。
  • toLocaleString():返回对象的字符串表示。
  • toString():返回对象的字符串表示。
  • valueOf():返回对象的字符串、数值或布尔值表示。

操作符

关系运算符:> < >= <= ==(不严格) ===(严格) != !==

三元运算符:

​ 表达式1 ? 表达式2 : 表达式3 //true执行表达式2,false执行表达式3

一元运算符:

var num = 10;
var sum = num ++ +10;	//20,先参与运算后再加一
var sum = ++num + 10;	//21,先加一再参与运算

运算

**分支结构:**if语句,if-else语句,if - else if - else if…语句,switch case语句,三元表达式。
**循环结构:**while循环,do while循环,for循环,for-in循环。
**调试:**浏览器F12,单击Sources,双击文件,设置断点;Watch设置自己想看的值;执行出现的蓝色框代表跳到那,但没有执行。
·变量定义:
语法:var 数组名 = new Array();或者var 数组名 = new Array[];
!!!注意:()或者[]内填一个数字为数字长度,多个数字则为元素。

函数(重要)

**函数注意问题:**要遵循驼峰命名法;一个函数只能完成一个功能。
**实参与形参:**实参是调用函数时传入的数或变量;形参是函数定义时定义在()内的参数。

function f1(x,y) {	// x,y为形参
    return x + y;
}
var result = f1(10,20);	//10,20为实参
console.log(result);

arguments对象(伪数组):

​ arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。
arguments对象不是一个 Array 。它类似于Array,但除了length属性和索引元素之外没有任何Array属性,但可以转换为真的Array。

function f1() {
    console.log(arguments.length);	// 返回5
}
f1(10,20,30,40,50);
// 转为数组
function test(){
    var args = Array.prototype.slice.call(arguments);
    console.log(Object.prototype.toString.call(args));
}
test(1,2,3);
// 输出[object Array]

变量、作用域和内存问题

基本类型值:简单的数据段。
引用类型值:可能由多个值构成的对象。

复制及存储

在这里插入图片描述

检查类型

被检查对象或值 instanceof 鉴定对象或值;

作用域(执行环境)

**全局变量:**声明的变量是使用var声明的变量。
**局部变量:**在函数内部声明的变量。
**隐式全局变量:**声明的变量没有var,包括在函数声明的,外部也可以使用。
**全局作用域:**全局变量的作用范围。
**局部作用域:**隐式变量的作用范围(函数内);
!!!用var声明的变量不可删除,隐式全局变量可以被删除(delete num;)。

作用域链

|-环境与环境的关系。
|-是保证对执行环境有权访问的所有变量和函数的有序访问。
|-搜索由内向外,先当前环境,再父环境。

没有块级作用域

比如在if定义了属性或for初始化变量的表达式所定义的变量,在}结束后会添加到全局变量中,也可以访问。

附加

JSON格式的数据

  • 一般都是成对的,是键值对。
  • 一般JSON格式的数据无论键还是值都是用双引号括起来的。
    例:
var json = {
    "name" : "小明",
    "age" : "10"
};
// 访问
json["name"];	或者	json.age;(遍历对象中确实有这个属性才可这样写,访问无影响)
// 遍历
for(var key in json) {	// key存的时json对象的所有属性名
    console.log(json[key]);
}

简单类型和复杂类型

|-原始数据类型:number,string,boolean,undefined,null,object。
|-基本类型(简单类型),值类型:number,string,boolean。
|-复习类型(引用):object。
|-空类型:undefined,null。

  • 值类型栈中存储
  • 引用类型:对象在堆中存储,地址在栈中存储。
  • 值类型之间传递,传递的是值。
  • 引用类型之间传
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值