js的特点

JavaScript是一种解释性、单线程、动态类型的脚本语言,运行在客户端浏览器上。它的特点是不需要编译,跨平台,遵循ECMAScript标准。JavaScript由ECMAScript语法、DOM(文档对象模型)和BOM(浏览器对象模型)组成。变量声明是动态的,数据类型包括原始值(如Number、String、Boolean等)和引用值(如Object)。JavaScript的引入可以通过行内、内部和外部方式,外部引入具有维护性和缓存优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js的特点

  1. 解释性语言 ==》不需要编译代码,可以跨平台,像php,js,jsp都是解释性语言
  2. 单线程 ==》 同一时间只能执行一件事情(js引擎是单线程的-- eventLoop)
  3. ECMA标准 ==》为了统一js的规则,推出ECMA标准,因为也成为 ECMAScript
  4. '双精度’格式(即64位二进制),遵循 IEEE754 规范
  5. 解释性 / 轻量级 / 跨平台(与操作系统无关) / 动态(运行时才知道变量类型) / 弱类型(较为灵活,隐式类型转换) 的脚本语言
  6. 运行在客户端浏览器上

解释性语言和编译性语言的区别

解释性语言:
	a.读一行,执行一行
	b.优点:跨平台
	c.缺点:与编译性语言相比稍微慢点
	d.代表:JS,php,jsp
编译性语言:
	a.通篇翻译后,生成翻译文件,执行翻译后的文件
	b.优点:快,常用于开发游戏操作系统
	c.缺点:移植性不好,不跨平台
	d.代表:C语言,C++
	e.通常都是强类型语言

js的组成及引入

js的组成

ECMAscript  ==》 	ECMAscript语法
DOM  		==》	文档对象模型,操作DOM元素
BOM  		==》	浏览器对象模型,与浏览器窗口进行互动

js的引入

行内引入:行内引入方式必须结合事件来使用

<a href="javascript:alert('行内引入')">行内引入</a>
// 扩展:行内阻止a标签跳转的默认事件
1.	<a href="javascript:;">aa</a>
2.	<a href="javascript:void(false);">aa</a>
// 	viod(0);相当于 return false;

内部引入:在 head 或 body 中,定义script标签

<script>
  alert('内部引入')
</script>

外部引入:(w3c规范)

<script type='text/javascript' src='demo.js'></script>
/*
*	外部引入js的好处
* 		1.维护性高
* 		2.可缓存(加载一次,无需再加载)
* 		3.方便扩展,复用性高
*/

js变量

变量声明过程

  1. js是一种弱类型语言,任何类型变量都可以通过 var 声明
  2. 先声明,后赋值
<script type='text/javascript'>
var arr =[1,2,3];
    第一步:变量声明
        ==>向系统申请一个存储空间,将这个空间命名为 arr
    第二部:变量赋值
        ==>将数组 [1,2,3] 赋值给 arr
</script>
// 扩展:由 var,let,const 声明的变量属于 不可配置属性
var a = 1
delete a // false

变量命名规则

1.变量名必须以英文字母 _$开头,不能以数字开头
2.变量名可以包括英文字母、 _ 、数字,不能用中文
3.不可以用系统关键字保留字作为变量名
4.语义化,命名尽量有意义
5.小驼峰,首个字母小写,后面单词字母大写
js中的关键字集合==> 图解
系统关键字
js中保留字集合==>图解
保留字

js的数据类型

值的类型 ==》决定数据类型

五大不可改变的原始值(栈数据)

Number			数字类型
String			字符类型
Boolean			布尔类型
undefined		未定义的值
null			占位符

NumberStringBooleanundefinednullSymbolBigInt

  • undefined:
1. 变量被声明了,但没有赋值时,就等于undefined2. 调用函数时,应该提供的参数没有提供,该参数等于undefined3. 对象没有赋值的属性,该属性的值为undefined4. 函数没有返回值时,默认返回undefined
  • null:虽然typeof null 会输出 "object",但是这只是 JS 存在的一个悠久 Bug。在 JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象然而 null 表示为全零,所以将它错误的判断为 object 。
  • Symbol 代表独一无二的值,最大的用法是用来定义对象的唯一属性名,ES6新增的数据类型。
  • BigInt:Javascript 中的任意精度整数,可以安全存储和操作大整数。即使超出 Number 能够表示的安全整数范围,ES6新增的数据类型。
// BigInt 的使用方式
// 方式1:要创建BigInt,只需要在数字末尾追加 n 即可
console.log( 9007199254740995n );    // → 9007199254740995n	
console.log( 9007199254740995 );     // → 9007199254740996
// 方式2:用BigInt()构造函数
BigInt("9007199254740995");    // → 9007199254740995n

// 简单使用
10n + 20n;    // → 30n	
10n - 20n;    // → -10n	
const x = 10n;	

++x;          // → 11n	
--x;          // → 9n
console.log(typeof x);   //"bigint"

// 值得警惕的点
//  1.不支持一元加号运算符
10 + 10n;    // → TypeError
//  2.不能将BigInt传递给Web api和内置的 JS 函数
Math.max(2n, 4n, 6n);    // → TypeError
//  3.元素都为BigInt的数组可以进行sort
let arr = [1n,3n,2n]
arr.sort();		// → [1n, 2n, 3n]
//  4.当 Boolean 类型与 BigInt 类型相遇时
Boolean(1n);    // → true
Boolean(0n);    // → false
//  5.BigInt可以正常地进行位运算,如|、&、<<、>>和^
10n & 2n ;    // → 2n
//  6.兼容性 不兼容IE

基本数据类型由于结构相对简单,直接把创建的值存储到栈内存

let a = 26
/*
*	1.创建一个值(基本类型直接存储在栈内存中即可)
*	2.创建一个变量a,把其存储到 VO(GLOBAL) 中
*	3.让创建的变量a和创建值12关联在一起 ==》赋值操作
*/

引用值 object (堆数据)

Object			普通对象
Array			数组对象
Function		函数对象
Date			日期对象
RegExp			正则对象

引用数据类型的结构相对复杂(一个综合体,包含很多值),需要单独开辟堆内存存储

let n = {a : 1, b : 2}
/*
*	1.创建值
*		1.1 开辟一个堆内存(Heap),每一个堆内存都有一个16进制的地址
*		1.2 把对象中的键值对分别存储到堆内存中
*		1.3 把堆内存的地址放在栈内存中,用来供变量的引用
*	2.创建一个变量
*	3.让变量和之前创建堆内存的地址进行关联
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳晓黑胡椒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值