大家好,小编来为大家解答以下问题,javascript语言的前身,javascript之前叫什么,现在让我们一起来看看吧!
- 前端三大语言
- 前端三层
JavaScript 简介
一、初识JavaScript
1. JavaScript的历史
- 创始人:布兰登·艾奇 Brendan Eich
- Netscape 公司
- 1995年发明 JavaScript,前身 LiveScript
- JavaScript垄断了浏览器端脚本:
VBScript、JScript、JavaScript
2. 什么是前端语言和后端语言
3. ECMAScript是JavaScript的标准
- 1997年,欧洲计算机制造商协会(ECMA)设置了 JavaScript 的标准,命名为 ECMAScript
4. JavaScript体系
5. JavaScript的语言风格和特性
- 类C语言的风格,简单好学
- 弱类型,繁文缛节少
二、JavaScript的书写位置
1. 内嵌式
- 在
<body>
中<>
标签,在内部书写 JavaScript 代码
2. 外链式
- 将代码单独保存为 .js 格式文件,然后在 HTML 文件中使用
< src=""></>
这样的形式引入它
JavaScript不能脱离HTML网页运行
三、输出语句
1. alert() 语句
- 弹出警告框
alert('慕课网');
:alert()
是内置函数,函数就是功能的“封装”(调用函数需要使用圆括号)'慕课网'
是函数的参数,因为它是字符串,我们需要将它用引号包裹
2. console.log() 语句
- 控制台输出
console.log('慕课网');
:console
是 JS 的内置对象,通过“打点”可以调用它内置的log“方法”(所谓“方法”就是对象能够调用的函数)
四、处理报错
1. REPL 环境
- 控制台也是一个 REPL 环境,可以使用它临时测试表达式的值
JavaScript 变量
- 变量是计算机语言中能储存计算结果或能表示值抽象概念
- 变量不是数值本身,它们仅仅是一个用于存储数值的容器
一、命名
1. 方法
(1) 匈牙利命名法
- 变量名=类型+对象描述
- Int 整型
i
- Float 浮点型
fl
- Boolean 布尔
b
- String 字符串
s
- Array 数组
a
- Object 对象
o
- Function 函数
fn
- Regular Expression 正则
re
- Int 整型
(2) 驼峰命名法
- 全部小写
- 单词与单词之间用下划线
_
分割
- 单词与单词之间用下划线
- 大小写混合
- 大驼峰:每个单词的首字母大写
- 小驼峰:第一个单词的首字母小写,其他单词的首字母都大写
2. 规则
- 只能由 字母、数字、下划线、$ 组成
- 首字符只能是英文字母或者下划线(不能以数字开头)
- 不能是 JS 关键字或保留字
- 变量命大小写敏感,a 和 A 是两个不同的变量
二、声明
1. 定义变量
- 要想使用变量,第一步就是声明它,并给它赋值
var a = 5;
使用var
关键字定义变量- 一个变量只定义但没有赋初值,默认值是 undefined
- 一个变量只有被
var
定义,并赋初值之后,才算正式初始化完成
2. 变量的使用
- 当变量被赋值后,就可以使用它了
console.log(a);
变量使用时不能使用引号
3. 改变变量的值
- 变量的值可以被改变,改变变量值不再需要书写
var
关键字了
var a = 10; // 定义变量a并赋初值为10
a = 18; // 更改变量a的值为18
console.log(a); // 18
4. 变量的常见错误
- 不用
var
定义,而直接将值赋予它,虽不引发报错,但会产生作用域问题 - 尝试使用一个既没有被
var
定义过,也没有赋过值的字符,就会产生引用错误
5. 变量声明提升
- 变量声明的提升:你可以提前使用一个稍后才声明的变量,而不会引发异常
- 再执行所有代码之前,JS 有预解析阶段,会预读所有变量的定义
- 注意事项
- 变量声明的提升是 JavaScript 的特性
- 在实际开发时,不要刻意使用变量声明提升特性。一定要先定义并给变量赋初值,然后再使用变量
三、JavaScript数据类型
1. 两大类数据类型
- 基本数据类型:Number、String、Boolean、Undefined、Null
- 复杂数据类型:Object、Array、Function、RegExp、Date、Map、Set、Symbol 等
2. typeof运算符
- 使用
typeof
运算符可以检测值或者变量的类型console.log(typeof 5); //number
- 5种基本数据类型的 typeof 检测结果
3. 基本数据类型
(1) Number(数字)类型
- 所有数字不分大小、不分整浮、不分正负,都是数字类型
- 小数中 0 可以省略
.5; //0.5
- 科学计数法:较大数或较小数(绝对值较小)可以写成科学记数法
- 不同进制的数字:
- 二进制数值以
0b
开头0b10 //2
- 八进制数值以
0
开头017 //15
- 十六进制数值以
0x
开头0xf //15
- 二进制数值以
- 特殊的数字型值NaN:
- NaN是英语“Not a Number”的意思,但它是一个数字类型的值
- 0除以0的结果是
NaN
GPT改写。事实上,在数学运算中,若结果不能得到数字,其结果往往都是NaN
- 任何涉及
NaN
的操作都会返回NaN
NaN
与任何值都不相等,包括NaN
本身:alert(NaN==NaN); //false
- Infinity属性:
Infinity
是表示正无穷大的数值;当数超过浮点数的上限时,即 1.797693134862315E+308,显示Infinity
-Infinity
是表示负无穷大的数值;当数超过浮点数的下限时,即 -1.797693134862316E+308,显示-Infinity
- 非零数字除以 0 的结果是 Infinity。因为比0大的数除以0,则会得到无穷大,所以 JS 用 Infinity 来显示出来
var a=0/0; //NaN;
var a=1/0; //Infinity;
var a=1/0*0; //NaN;
(2) String(字符串)类型
- 字符串就是“人类的自然语言”
- 字符串要用引号包裹,双引号 或者 单引号 均可
- 数字 11 和字符串 ‘11’ 在语义上是不同的,前者表达一个数量,后者是一个文本
- 字符串的拼接:加号可以用来拼接多个字符串
'imo'+'oc' //'imooc'
- 字符串和变量的拼接:要将一个变量的值“插入”到字符串中,要“斩断链接”
var year = 2022;
var str = '北京冬季奥运会在'+ year +'年召开';
- 空字符串:一些时候需要使用空字符串,直接书写闭合的引号对即可
var str='';
- 字符串的length属性:表示字符串的长度
'我喜欢JS,我也喜欢HTML'.length //14
- 字符串的常用方法:
- charAt() 方法:可以得到指定位置的字符
'我喜欢JS,我也喜欢HTML'.charAt(0) //'我'
'我喜欢JS,我也喜欢HTML'.charAt(77) //''
- substring() 方法:
substring(a,b)
方法得到从 a 开始到 b 结束(不包括 b 处)的子串'我喜欢JS,我也喜欢HTML'.substring(3,5) //'JS'
- 如果省略第二个参数,返回的子串会一直到字符串的结尾
'我喜欢JS,我也喜欢HTML'.substring(6) //'我也喜欢HTML'
- 参数 a 可以大于参数 b,数字顺序将自动调整为小的数字在前
'我喜欢JS,我也喜欢HTML'.substring(5,3) //'JS'
- 如果省略第二个参数,返回的子串会一直到字符串的结尾
- substr() 方法:
substr(a,b)
方法得到从 a 开始的 长度为 b 的子串'我喜欢JS,我也喜欢HTML'.substr(3,2) //'JS'
- 第二个参数 b 可以省略,表示返回的子串会一直到字符串的结尾
'我喜欢JS,我也喜欢HTML'.substr(3) //'JS,我也喜欢HTML'
- 第一个参数 a 可以是负数,表示倒数位置
'我喜欢JS,我也喜欢HTML'.substr(-4,2) //'HT'
- 第二个参数 b 可以省略,表示返回的子串会一直到字符串的结尾
- slice() 方法:
slice(a,b)
方法得到从 a 开始到 b 结束(不包括 b 处)的子串'我喜欢JS,我也喜欢HTML'.slice(3,5) //'JS'
与 substring() 对比的不同点:slice(a,b)
的参数可以是负数 (substring()
不能是负数)'我喜欢JS,我也喜欢HTML'.slice(-4,-1) //'HTM'
slice(a,b)
中参数 a 必须小于 参数 b (slice()
不能自动交换两个参数的位置)'我喜欢JS,我也喜欢HTML'.substring(5,3) //''
- toUpperCase() 和 toLowerCase():
- toUpperCase() 转为大写
'imooc'.toUpperCase(); //'IMOOC'
- toLowerCase() 转为小写
'IMOOC'.toUpperCase(); //'imooc'
- toUpperCase() 转为大写
- indexOf() 方法:
indexOf()
方法返回某个指定的字符串值在字符串中首次出现的位置- 如果要检索的字符串值没有出现,则返回 -1
(3) Boolean(布尔)类型
- 布尔(Boole·George)英国19世纪数学家、逻辑学家
- 布尔型值只有两个:
true
和false
,分别表示真和假
(4) Undefined类型
- 一个没有被赋值的变量的默认值是
undefined
,而undefined
的类型也是 undefined - undefined 既是值,又是一种类型,这种类型只有它自己一个值
- 在变量声明提升时,变量的值也是
undefined
(5) Null类型
- null 表示“空”,它是“空对象”
- 当我们需要将对象销毁、数组销毁或者删除事件监听时,通常把它们设置为
null
typeof null; //object
- 类型和
typeof
检测结果并不总是一一对应,比如数组用typeof
检测结果也是 object
- 类型和
(6) 基本类型值小总结
4. 数据类型的转换
(1) Number() 函数
- 其他值—>数字
(2) parseInt() 函数
- 字符串—>整数
(3) parseFloat() 函数
- 字符串—>浮点数
(4) String() 函数
- 其他值—>字符串
(5) toString() 方法
- 几乎所有值都有
toString()
方法,功能是将其他值转为字符串
(6) Boolean() 函数
- 其他值—>布尔值
5. 复杂数据类型
- 数组、对象、函数、set、map
- 复杂数据类型都是 “引用类型”
6. 基本类型和引用类型对比
- 基本类型:Number、Boolean、String、Undefined、Null
- 引用类型:Array、Object、Function、Regexp…
- 相等判断时:
- 基本类型会比较 值 是否相等
- 引用类型会比较 址 是否相等,也就是说它会比较是否为内存中的同一个东西
- 总结
四、作用域
1. 全局变量
- 全局变量:
在函数以外定义的变量;
在函数体内的无var
的变量 - 全局变量可以在任何位置调用
2. 局部变量
- 局部变量:
在函数内部使用var
声明的变量;
函数的参数变量 - 局部变量只能在当前函数体内部调用
3. 优先级
- 局部变量优先级高于同名全局变量
- 参数变量优先级高于同名全局变量
- 局部变量优先级高于同名参数变量
4. 特性
- 忽略块级作用域
- 全局变量是全局对象的属性
- 局部变量是调用对象的属性
(1) 作用域链
- 内层函数可访问外层函数局部变量
- 外层函数不能访问内层函数局部变量
(2) 生命周期
- 全局变量:除非被显示删除,否则一直存在
- 局部变量:自声明其值函数运行完毕 或 被显示删除
- 回收机制:标记清除、引用计数