| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 2021-07-11 JavaScript -> 正文阅读 |
|
[JavaScript知识库]2021-07-11 JavaScript |
一.JavaScript简介a.JavaScript与Java的区别 1.java:是Sun公司推出的面向对象的程序设计语言 ? ?JavaScript:是Netscape公司的产品,目的是为了拓展Netscape浏览器功能,是一种可以嵌入? ? ? ? ? ? ? ? ? ? ? ? ? ?Web页面的解释性语言 2.Java:是面向对象的程序设计语言,必须从类定义开始 ? ?JavaScript:是基于对象的,本身提供了非常丰富的内部对象供设计人员使用。 3.Java语言的最小程序单位是类定义;而JavaScript 中充斥着大量函数。 4.两种语言的执行方式完全不一样。 Java:必须先经过编译,生成字节码,然后由Java虚拟机运行这些字节码。 JavaScript:是一种脚本语言,其源代码无须经过编译,由浏览器解释执行。 5.两种语言的变量声明也不一样。 Java:是强类型变量语言,所有的变量必须先经过声明,才可以使用,所有的变量都有其固定的? ? ? ? ? ? ? ?数据类型。 JavaScript:是弱类型变量语言,其变量在使用前无须声明,由解释器在运行时检查其数据类型。 6.代码格式不一样。 Java:采用一种与HTML 无关的格式,必须像HTML 中引用外媒体那样进行装载,其代码以字节代码的形式保存在独立的文档中。 JavaScript :它的代码采用一种文本字符格式,可以直接嵌入HTML 文档中,并且可动态装载,编写HTML文档就像编辑文本文件一样方便。 b.ECMAScript 除了JavaScript(JavaScript是由 Netscape公司开发的),还有另一种脚本语言:JScript 语言(JScript语言是由Microsoft公司开发的)。两种语言的核心功能、作用基本一致,都是为了扩展浏览器的功能而开发的脚本语言。早期的JScript和 JavaScript差异相当大,Web程序员不得不痛苦地为两种浏览器分别编写脚本。于是诞生了ECMAScript,这是一个国际标准化的JavaScript 版本,现在的主流浏览器都支持这个版本。现在平时所说的JavaScript,严格意义上讲,其实应该是 ECMAScript,ECMAScript一般简写成ES。 c.运行JavaScript 1.方法一:使用javascript:前缀构建执行JavaScript 代码的URL。(所有可以设置URL的地方都可使用这种方法) 2.方法二:使用<script.../>元素来包含 JavaScript代码。(如果页面里需要包含大量的JavaScript 代码,则建议将这些JavaScript脚本放在<script>和</script>标签之间。<script...>元素既可作为<head.….>子元素,也可作为<body.../>子元素。)
d.导入JavaScript 1.把js与html做到文件级别分离,便于各自维护开发,推荐使用 ? ? ? ? ? ? ? ? ? <script src="***.js"></script> (src:指定外部脚本文件的 URL。指定该属性之后,该<script...>元素只能引入外部脚本,不能在该元素内部写脚本。)
该段为错误代码,js无法执行的原因是:先执行js,js中去查询html元素,此时html元素还未渲染,所以找到html元素,因此报错。 解决办法: 1、把js代码放到html元素的下边 2、如果是外部js文件,可以使用defer属性来延迟js等到html元素加载完之后执行 3、如果使用jquery,可以使用文档就绪函数来解决 e.noscripy <noscript..>元素用来向不支持JavaScript或禁用了JavaScript 的浏览器显示提示信息。该元素的用法非常简单,直接在该元素内放提示信息即可,无须指定任何属性。 二.JavaScript变量a.定义变量方式 1.隐式定义:直接给变量赋值 2.显示定义:使用var关键字定义变量
JavaScript中的变量是区分大小写的。因此变量abc和 Abc是两个不同的变量。 b.自动类型转换
? 对于加号运算符,因为字符串可用加号作为连接运算符,所以系统自动将数值转换成字符串,并将两个字符串进行连接运算。 1.toString():将布尔值、数值等转换成字符串。 2.parselnt():将字符串、布尔值等转换成整数。 3.parseFloat():将字符串、布尔值等转换成浮点数。
4:通过parseInt()或parseFloat()强转后的结果(要不,是成功的数,要不,是NaN)) 字符串值:如果字符串是一个数值字符串,则可以转换成一个数值,否则将转换成 NaN。 undefined、null、布尔值及其他对象:一律转换成 NaN。 5.当字符串不是数字开头时,转换成NaN;如果是数字开头,但包含非数字字符时,从非数字开始截掉。
? d.变量作用域 根据变量定义的范围,变量分为全局变量和局部变量: 全局变量:不在所有函数里定义的变量和在函数里不使用var(隐式定义)定义的变量,就是全局变量 局部变量:在函数里定义的、且使用var(显式定义)定义的变量,是局部变量
1.全局变量与局部变量名字相同时:局部变量覆盖全局变量(在函数里,局部变量覆盖全局变量;在函数外,局部变量失效,访问全局变量)
依次输出的结果为: 局部变量? ? 全局变量 ?2.,javascript变量没有块范围(不是绝对的,因为可以通过let定义变量),{}指的就是块范围,就是在{}里定义的变量,出了{}依然可以使用
3.全局变量的作用范围对于html事件处理一样有效(全局变量的作用范围是可以拓展到html的事件处理中的)
e.变量提升机制 此处需要理解JavaScript的变量提升机制。所谓变量提升,指的是变量声明总是会被解释器“提升”到函数体的顶部。JavaScript变量提升甚至不需要定义变量的语句真正执行,只要在函数中包括了定义变量的语句,该变量声明就会被提升到函数体的顶部。
变量提升只是提升变量声明部分,并不会提升变量赋值部分 var定义的变量存在如下问题:var定义的变量没有块作用域。var定义的全局变量会自动添加全局 window对象的属性。var定义的变量会提前装载。 1.let定义的变量有块作用域:
2.let定义的变量不会强加给window对象:
?3.let定义的变量不会提前转载(提升):
g.const常量 使用const定义常量, 语法:要求必须在定义时初始化值,并且之后不可以修改常量的值, 约定俗称的规范:常量一般都是大写命名,如果是多个单词,中间使用_连接
三.JavaScript变量a.基本数据类型 1.数值类型:包含整数或浮点数。 2.布尔类型:只有true或false两个值。 3.字符串类型:字符串变量必须用引号括起来,引号可以是单引号,也可以是双引号。 4.undefined类型:专门用来确定一个已经创建但是没有初值的变量。 5.null类型:用于表明某个变量的值为空。 b.数据类型 1.字面量创建数值类型:var a = 10 ? 面向对象创建数据类型:var a = new Number("10"); 2.科学计数法使用51.2E2来表示,其中E不区分大小写,举例:5.12e3、4E-4
2.如果包含小数,则小数点前面的0可以省略
?数值直接量不要以0开头。因为JavaScript不仅支持十进制数,还支持其他进制数。八进制数以0开头,十六进制数以0x或者0X开头。 3.数值类型里两个特殊值:正无穷大、负无穷大 当数值变量的值超出了其表数范围时,将出现两个特殊值:Infinity(正无穷大)和-Infinity(负无穷大)。前者表示数值大于数值类型的最大值,后者表示数值小于数值类型的最小值。两个正无穷大总是相等,虽然真实值不相等,但是都是正无穷大后,就相等了;负无穷大同理。 4.JavaScript中的NaN,全称Not a Number ,代表非数。NaN不会与任何数值变量相等,也就是 NaN==NaN也返回 false。JavaScript专门提供了isNaN()函数来判断某个变量是否为NaN。
? 5.浮点数精度丢失,所以要比较浮点数,需要使用差值法
? c.字符串类型 1.字符串定义方式,仅有一个字符的字符串也是字符串类型,没有字符类型 2.字符串必须用引号括起来,可以是双引号也可以是单引号,而且值是相等的 3.JavaScript中的字符串与Java中的字符串主要有两点区别:①JavaScript中的字符串可以用单引号引起来;②JavaScript中比较两个字符串的字符序列是否相等使用==即可,无须使用equals()方法。 5.JavaScript提供字符串相关的方法和属性: String():类似于面向对象语言中的构造器,使用该方法可以构建一个字符串。 charAt():获取字符串特定索引处的字符。 charCodeAt():返回字符串中特定索引处的字符所对应的 Unicode值。 toUpperCase():将字符串的所有字母转换成大写字母。 match():使用正则表达式搜索目标子字符串。 concat():用于将多个字符串拼加成一个字符串。 replace():将字符串中某个子串以特定字符串替代。
?(javaScript字符串里第一个字符的索引是0,而不是1。) 6.indexOf()和lastIndexOf()查找方法: indexOf(searchString[, startIndex]):搜索目标字符串 searchString出现的位置。其中startIndex指定不搜索左边 startIndex个字符。 lastlndexOf(searchString[, startIndex]):搜索目标字符串searchString最后一次出现的位置。如果字符串中没有包含目标字符串,则返回-1。功能更强大的搜索方法是search(),它支持使用正则表达式进行搜索。
7.match()和search()查找方法 match()和 search()方法都支持使用正则表示式作为子串;区别是前者返回匹配的子字符串,后者返回匹配的索引值。match()支持使用全局匹配,通过使用g标志来表示全局匹配,match()方法返回所有匹配正则表达式的子串所组成的数组。 match()方法的返回值为字符串数组或null,如果包含匹配值,将返回字符串数组;否则就返回null。search()返回值为整型变量,如果搜索到匹配子串,则返回子串的索引值;否则返回-1。
8.substring()和slice()截取方法: substring(start [, end]):从start(包括)索引处,截取到end(不包括)索引处,不截取 end索引处的字符。如果没有end参数,将从start处一直截取到字符串尾。 slice(start[, end]):与substring()的功能基本一致,区别是slice()可以接受负数作为索引,当使用负索引值时,表示从字符串的右边开始计算索引,即最右边的索引为-1。
d.boolean(布尔)类型 布尔类型的值只有两个:true和 false。布尔类型的值通常是逻辑运算的结果 e.undefined类型和null类型? undefined类型的值只有一个undefined,.该值用于表示某个变量不存在,或者没有为其分配值,也用于表示对象的属性不存在。null 用于表示变量的值为空。总体而言,undefined表示没有为变量设置值或属性不存在;而null表示变量是有值的,只是其值为null。但如果不进行精确比较,很多时候undefined和 null本身就相等,即null==undefined将返回true。如果要精确区分null和 undefined,应该考虑使用精确等于符。 判断变量是什么类型,使用typeof运算符;判断对象是什么类型的对象,使用instanceof运算法 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 12:04:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |