JavaScript随笔

JS笔记

介绍

JavaScript简称JS,是一种脚本编程语言,兼容函数式变阿城和 面向对象编程,是Web前端开发的唯一选择,JavaScript有很多框架,如JQuery,AngularJS,React,Vue等,他们是学习JavaScript的重要内容.

node.js === JRE,JRE运行java字节码文件

js运行环境:

  • 浏览器
  • node.js 桌面端的运行环境,服务器端
历史

它最初由Netscape的Brendan Eich设计。JavaScript是甲骨文公司的注册商标。Ecma国际以JavaScript为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,浏览器对象模型。

Netscape在最初将其脚本语言命名为LiveScript,后来Netscape在与Sun合作之后将其改名为JavaScript。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”,因此语法上有类似之处,一些名称和命名规范也借自Java。但JavaScript的主要设计原则源自Self和Scheme。JavaScript与Java名称上的近似,是当时Netscape为了营销考虑与Sun微系统达成协议的结果。为了取得技术优势,微软推出了JScript来迎战JavaScript的脚本语言。为了互用性,Ecma国际(前身为欧洲计算机制造商协会)创建了ECMA-262标准(ECMAScript)。两者都属于ECMAScript的实现。尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是JavaScript具有非常丰富的特性。

发展初期,JavaScript的标准并未确定,同期有Netscape的JavaScript,微软的JScript和CEnvi的ScriptEase三足鼎立。1997年,在ECMA(欧洲计算机制造商协会)的协调下,由Netscape、Sun、微软、Borland组成的工作组确定统一标准:ECMA-262.

JavaScript的两种使用方式

​ JavaScript代码必须位于标签之间,脚本可被放置于HTML页面的或部分中,或兼而有之

  • 外部脚本

脚本可放置在外部文件中,外部脚本很实用,如相同的脚本被用于许多不同的网页。JavaScript 文件的文件扩展名是 .js。如需使用外部脚本,请在

外部JavaScript的优势
  • 分离了 HTML 和代码
  • 使 HTML 和 JavaScript 更易于阅读和维护
  • 已缓存的 JavaScript 文件可加速页面加载
外部脚本的加载

—般情况下,在文档的 标签中包含 JavaScript 脚本,或者导入的 JavaScript 文件。这意味着必须等到全部 JavaScript 代码都被加载、解析和执行完以后,才能继续解析后面的 HTML 部分。如果加载的 JavaScript 文件很大, HTML 文档解析就容易出现延迟。

​ 为了避免这个问题,在开发 Web 应用程序时,建议把导入 JavaScript 文件的操作放在后面,让浏览器先 将网页内容解析并呈现出来后,再去加载 JavaScript 文件,以便加快网页响应速度。

JavaScript延迟加载

示例:

​ 在下面示例中,外部文件 common.js 包含的脚本将延迟到浏览器解析完网页之后再执行。浏览器先显示网页内容,然后才弹出提示文本。如果不设置 defer 属性,则执行顺序是相反的。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="js/common.js" defer="defer"></script>
	</head>
	<body>
		<div style="width: 200px;height: 200px;background-color: #0062CC;">hello world</div>
	</body>
</html>
异步加载JavaScript文件

​ 在默认情况下,网页都是同步加载外部 JavaScript 文件的,如果 JavaScript 文件比较大, 就会影响后面 HTML 代码的解析。上面提到一种解决方法:就是最后加载 JavaScript 文件。

现在可以为

JavaScript代码块

代码块就是使用

示例1:

<script>
var welcome="欢迎使用javascript代码块";
</script>
<script>
console.log(welcome);
</script>

浏览器在解析这个 HTML 文档时,如果遇到第一个

示例2:

如果在一个 JavaScript 代码块中调用后面代码块中声明的变量或函数,就会提示语法错误。

image-20221116223627747

<script>
console.log(welcome);
</script>
<script>
var welcome="欢迎使用javascript代码块";
</script>

如果把两块代码放在一起,就不会出现上述错误:

<script>
	console.log(">>>"+welcome);   // 输出  >>>undefined 
	var welcome = "欢迎使用javascript代码块";
</script>
声明变量

js中全局对象window

  • var声明变量

    • 在函数外部声明的变量都是全局变量

    • 全局变量会增加到window对象上

    • var声明的变量不具备代码块作用域

    • 没有用var声明的变量直接使用也是全局变量

    • 只声明变量不赋值 ,它的值是undefined

    • var声明的变量具有变量提升的作用(js在执行前会将所有声明的变量提升到前面,并初始化为undefined)

  • let 声明变量(es6引入的)

    • 在函数外声明的变量都是全局变量,但是它不会增加到window对象上
    • let声明的变量具有代码块作用域(更严谨.推荐使用它声明变量)
    • 从表面上看,let声明的变量不具备变量提升的作用(变量必须先声明后使用)是因为它存在着暂时性死区,既在变量声明之前访问时,会报错
  • const声明常量

    • const声明的常量只能赋值一次,且只能在声明时赋值
    • 在函数外声明的变量都是全局变量,但是它不会增加到window对象上
    • const声明的变量具有块级作用域
    • 因为它存在着暂时性死区,既在常量声明之前访问会报错
    • const的本质:const定义的变量并非常量,并非不可变,它定义了一个常量引用的一个值,使用const定义的对象或者数字,其实是可变的
数据类型
  • 基本类型

    字符串String

    数字Number

    布尔Boolean

    空Null

    未定义Undefined

    Symbol(es6引入的独一无二)

  • 引用类型

    对象Object

    数字Array

    函数Function

    基本类型与引用类型的区别:

    基本类型存储在栈中,作用域结束释放内存

    引用类型的变量存储在栈中(作用域结束释放),内容存储在堆中(没有变量引用时释放)

字符串方法:

js对象中的原型方法(Object.prototype.method)类似于java的成员方法(成员方法通过对象调用)

js对象上的方法(Object.method)类似于java的静态方法(通过类名调用)

常用方法:

  • indexOf 查找

  • split 分隔方法 参数可以是正则表达式

    js中正则表达式的定义方式:

    let reg = /^1[3456789]\d{9}$;
    //验证手机号的规则
    
  • substring(indexStart[,indexEnd])截取字符串,包含起始位置,不包含结束位置

  • trim() 清除左右空格

  • replace() 替换部分字符串

  • replaceAll() 替换全部字符串

数字(Number)常用方法:
  • Number.NaN 表示非数字
  • Number.EPSILON 表示1与NUmber最小浮点数之间的差值

image-20221117222034707

  • Number.parseInt(string,redix)

  • Number.parseFloat(string) 开发时更多使用全局方法:parseFloat(string)

    原型方法:

    Number.Prototype.toFixed() 按照指定精度格式化数字

对象
  • 对象是一组无锡的属性集合,由多个属性:值组成属性:值用’,'隔开

  • 属性:值 属性是字符串类型,值 可以是以下类型

    字符串

    数字

    布尔

    对象

    函数

    数组

    null undefined symbole

定义方式

​ 对象直接量

​ 就是对象常量:{}

image-20221117224236930

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值