JavaScript概述一

news2024/11/28 14:47:15

1.JavaScript介绍

1.1 前端三要素

  • HTML:超文本标记语言,是一种使用标签(标记)描述网页中的视图内容的语言;
  • CSS:层叠样式表,主要用于美化web页面外观,决定了网页中的视图效果;
  • JavaScript:用于网页交互的解释性脚本语言,用于实现页面交互效果,赋予网页动态功能;

1.2 JavaScript简介

JavaScript是一种基于对象和事件驱动的弱类型的脚本语言,不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。

  • 基于对象:区别于Java中的面向对象,遵循对象.方法的规则,但是没有类的概念
  • 事件驱动:脚本语言代码需要由网页中的事件来触发执行
  • 脚本语言:JS作为寄生语言,写在HTML网页中

JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。

包含三部分:

  • ECMAScript语法::描述这个语言的基本语法和基本对象 ,包括变量、运算符、分支、循环、函数等。
  • DOM(Document Object Model)操作:文档对象模型,对网页上的标签进行操作,包含HTML标签和css相关内容,描述处理网页内容的方法和接口
  • BOM(Browser Object Model)操作:浏览器对象模型,实现对浏览器的操作,包括历史操作(前进、后退)、地址栏操作等,描述浏览器和用户进行交互的方法和接口。

1.3 JavaScript能够做什么?

  • 可以修改HTML标签的属性和样式
  • 可以动态修改网页中的内容
  • 可以对用户在网页中输入的数据进行校验(格式合法性校验)
  • 基于node.js技术进行服务器端编程
  • 可以访问Cookie及localstorage等浏览器端缓存数据

1.4 JavaScript不能做什么?

  • JS不能访问浏览器本地的用户文件
  • JS不能访问来自于不同服务器的缓存数据(Cookie)

2.JavaScript代码引入的方式 

2.1 直接写入到script标签中

<script type="text/javascript">
		alert("这个男人叫小帅");
		prompt("是否确认删除?")
		console.log(111)
</script>

2.2 引入外部js文件

可以将js代码编写到外部js文件中,然后通过script标签引入 写到外部文件中可以在不同的页面中同时引入,也可以利用到浏览器的缓存机制

<script type="text/javascript" src="./js/1.js"></script>

注意:scrip标签一旦用于引入外部js文件,就不能在编写代码了 即使编写了浏览器也会忽略 如果需要则可以再创建一个新的script标签用于编写内部代码 

2.3 直接写在标签内部(能用,但不推荐)

可以将js代码写在超链接的href属性中,这样当点击超链接时,会执行js代码

<a href="javascript:alert(1);">百度一下</a>

3.变量

3.1 js是弱类型的语言,不重视数据类型的声明,js会根据变量赋值的情况判断该变量属于何种数据类型。

3.2 var 变量名称 = 存储的数据; (variable 变量,var是全局变量的声明) 

      let 变量名称=存储的数据;(let是局部变量的声明,只在let命令所在的代码块内有效)

var name="林俊杰";
var age=30;
var ok=true;

3.3 变量的命名规范

  • 只能由字母、数字、_(下划线)、$(美元符号)组成。
  • 不能以数字开头。
  • 命名中不能出现-(js会理解成减号进行减法的操作),不能和关键字冲突。

注意:js中的每一条语句以分号(;)结尾,如果不写分号,浏览器会自动添加,但是会消耗一些系统资源.

4.数据类型

4.1 基本数据类型

4.1.1 undefined(未定义)

当声明一个变量,但是并不给变量赋值,该变量的数据类型就是undefined

		var age;
		console.log("age的数据类型是"+typeof(age));

4.1.2 number(数值型)

js中的一切浮点数和整数都属于数值型

var id=1;
console.log("id的数据类型是:"+typeof(id));
var score=56.5;
console.log("score的数据类型是:"+typeof(score));

注意:js中的小数和整数都是number类型,不存在整数除以整数还是整数的结论。

var a=1234/1000;
console.log(a);

 

4.1.3 String(字符串)

js中的字符串可以使用单引号包裹,也可以使用双引号包裹。

<script type="text/javascript">
			var str1='你好呀!';
			var str2="Nice to me too!";
			console.log(str1);
			console.log(str2);
</script>

字符串和其他的数据使用+号运算,会拼接成一个新的字符串 。

 var s = "12";
    s += 10;
    alert(s); 

4.1.4 boolean(布尔型)

仅有2个值:true和false。

4.1.5 null(空值型)

表示一个 null , undefined 是一样的。
var name=null;
console.log("name的数据类型是:"+name);

isNaN(Not a Number,不是一个数字)和typeof 

 isNaN():判断变量是否属于非数字,属于非数字返回true,不属于非数字则返回false。

注意:当数字型的字符串(如"123","5")遇上isNaN(),isNaN( )里面会调用Number函数去转义  

var str="123";
console.log("str是否属于非数字:"+isNaN(str));
console.log("str属于"+typeof(str)+"类型");

因为str属于数字型的字符串,当调用isNaN( )方法时,isNaN里面会调用Number函数去转义 ,字符串"123"就被转义成了数字123,所以最终的结果是false。

typeof(变量)或typeof  变量:返回变量的数据类型,是什么类型的数据就会返回对应的数据类型。

var sex='男';
console.log("变量sex属于"+typeof(sex)+"类型");
var height=175;
console.log("变量height属于"+typeof(height)+"类型");

=和==和===的区别

=:代表赋值。

==(相等):当使用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型再比较。

var a=123;
var b='123';
console.log("a==b为:"+(a==b));

 ===(全等):全等用来判断两个值是否全等,它和相等类似,不同的是它不会做自动类型转换,如果两个类型不等,直接返回false。

var a=123;
var b='123';
console.log("a===b为:"+(a===b));

4.2 引用数据类型(数组Array+对象Object)

4.2.1 数组Array

创建方式1(定义不赋值):

var ary1=new Array();
console.log(ary1)
var ary1=[];
console.log(ary1)

创建方式2(边定义边赋值):

var ary3=[1,true,'哈哈'];
console.log(ary3);
var ary3=new Array(1,true,'哈哈');
console.log(ary3);

 本质上,数组属于一种特殊的对象。typeof运算符会返回数组的类型是object。 

var ary2=new Array(1,'abc',true,null);
console.log('类型:'+typeof(ary2));

 变长数组,只有赋值了才会改变数组的原有长度

var ary1=new Array();
ary1[1]='嘿嘿';
console.log("ary1数组的长度是:"+ary1.length);

 

原数组ary1的长度为0,当给下标为1的元素赋值时,会改变原有数组ary1的长度,这一点和Java中的数组有区别。

var ary1=new Array();
ary1[1]='嘿嘿';
console.log("ary1数组的长度是:"+ary1.length);
console.log(ary1[3])
console.log("ary1数组的长度是:"+ary1.length);

如果超出下标访问,不会出错,会显示undefined 

ary1[3]没有被赋值,不能改变原有数组的长度,所以长度还是2。

JS数组中常见的方法或属性

1.获得数组的长度:数组名.length;

var array1=new Array(1,2,false,'嘿嘿');
console.log("array1的长度是:"+array1.length);

 

 2.获得索引位置的元素:数组名[索引或下标];

var array1=new Array(1,2,false,'嘿嘿');
console.log("array1中索引为2的元素是:"+array1[2])

 3.修改索引位置的元素值:数组名[索引或下标]=新的值 ;

var array1=new Array(1,2,false,'嘿嘿');
console.log("array1原数组:"+array1);
array1[1]=9;
console.log("修改后的array1数组:"+array1);

 4.在数组的尾项添加一个元素:数组名.push(添加的内容);

var array1=new Array(1,2,false,'嘿嘿');
console.log("array1原数组:"+array1);
array1.push(true);
console.log("在array1数组的尾项增添元素为true的新数组:"+array1);

5.删除数组的尾项: var last=数组名.pop();

会返回删除的那个元素last

var array1=new Array(1,2,false,'嘿嘿');
console.log("array1原数组:"+array1);
var last=array1.pop();
console.log("删除的尾项为:"+last)
console.log("删除尾项(嘿嘿)的新数组为:"+array1);

6.在数组的首项前添加一个元素:数组名.unshift (添加的内容);

var array1=new Array(1,2,false,'嘿嘿');
console.log("array1原数组:"+array1);
array1.unshift(6);
console.log("在首项前添加元素6后的数组为:"+array1);

7.删除数组的首项:var first=数组名.shift ();会返回删除的首项元素first

var array1=new Array(1,2,false,'嘿嘿');
console.log("array1原数组:"+array1);
var first=array1.shift();
console.log("删除首项(1)的新数组为:"+array1);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/428547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP快速入门07-Cookie与Session的说明与使用

文章目录前言一、关于Cookie和Session1.1 Cookie1.2 Session二、Cookie和Session的使用2.1 Cookie的使用例子2.2 Session的使用例子总结前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP快速入门与实战 Cookie和Session是一个Web开发几乎不可避免的东西&#xff0c;是网站开发…

Java入坑之Numbers Strings

目录 一、Lambda表达式 1.1简介 1.2使用场景 1.3Lambda表达式的使用条件 1.4Lambda表达式的语法 1.5Lambda表达式的精简 二、方法引用 2.1基本概念 2.2使用条件 2.3语法格式 2.4静态方法引用 2.5特定对象的实例方法 2.6构造函数的方法引用 三、包装类 3.1概念 3…

K_A28_004 基于STM32等单片机驱动SI4432对发SI4432实现数据传输 OLED显示

K_A28_004 基于STM32等单片机驱动SI4432对发SI4432实现数据传输 OLED显示所有资源导航一、资源说明二、基本参数参数引脚说明三、驱动说明时序:对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RCSI4432无线模块1.2、STM32F103C8T6SI4432无线模块五、基础知识学习与相关…

基于tensorflow和tensorflow-quantum的量子机器学习环境搭建, Mac环境下

量子神经网络&#xff08;Quantum neural networks, QNN&#xff09;及其变体量子卷积神经网络&#xff08;Quantum convolutional networks, QCNN&#xff09;&#xff0c;在内存和速度方面都有着高效的优势&#xff0c;能将经典向量由n维编码到log2^n个量子位&#xff0c;同时…

分子生物学 第四章 DNA的生物合成

文章目录第四章 DNA的生物合成第一节 DNA复制的一般特征1 DNA的半保留复制2 DNA的双向复制3 DNA的半不连续复制第二节 DNA复制的酶学1 DNA聚合酶1.1 原核生物DNA pol1.1.1 DNA pol I1.2 DNA pol II1.3 DNA pol III1.4 其它的DNA pol1.2 真核生物DNA聚合酶1.2.1 DNA pol α\alph…

深度学习基础入门篇[五]:交叉熵损失函数、MSE、CTC损失适用于字识别语音等序列问题、Balanced L1 Loss适用于目标检测

1.交叉熵损失函数 在物理学中&#xff0c;“熵”被用来表示热力学系统所呈现的无序程度。香农将这一概念引入信息论领域&#xff0c;提出了“信息熵”概念&#xff0c;通过对数函数来测量信息的不确定性。交叉熵&#xff08;cross entropy&#xff09;是信息论中的重要概念&am…

ITIL社群的内容及作用

官方网站 www.itilzj.com 文档资料: wenku.itilzj.com ITIL是全球范围内最为流行的IT服务管理框架之一&#xff0c;它能够帮助企业提高IT服务质量&#xff0c;提升业务价值。无论你是IT行业的从业者还是对ITIL感兴趣的人士&#xff0c;ITIL之家社群都将为你提供有价值的知识和经…

非关系型数据库---Redis安装与基本使用

一、数据库类型 关系数据库管理系统(RDBMS)非关系数据库管理系统(NoSQL) 按照预先设置的组织机构&#xff0c;将数据存储在物理介质上(即&#xff1a;硬盘上) 数据之间可以做无关联操作 (例如: 多表查询&#xff0c;嵌套查询&#xff0c;外键等) 主流的RDBMS软件&#xff1a;My…

java io流 概念 详解

IO流 当需要把内存中的数据存储到持久化设备上这个动作称为输出&#xff08;写&#xff09;Output操作。 当把持久设备上的数据读取到内存中的这个动作称为输入&#xff08;读&#xff09;Input操作。 因此我们把这种输入和输出动作称为IO操作。 学习目标: 一、文件类&#x…

张程伟:从开源项目到企业级数据库,云和恩墨 MogDB Uqbar 的技术探索与实践...

导语4月8日下午&#xff0c;为期两天的第十二届数据技术嘉年华&#xff08;DTC 2023&#xff09;在北京新云南皇冠假日酒店圆满落下帷幕。大会以“开源融合数字化——引领数据技术发展&#xff0c;释放数据要素价值”为主题&#xff0c;汇聚产学研各界精英到场交流。作为大会的…

电蚊拍欧盟CE认证EMC+LVD测试

电蚊拍&#xff08;Mosquito&#xff09;&#xff0c;主要由高频振荡电路、三倍压整流电路和高压电击网DW三部分组成。工作中&#xff0c;经升压电路在双层电网间产生1850V直流左右的高压电&#xff0c;两电网间的静电场有较强的吸附力&#xff0c;当蚊蝇等害虫接近电网时&…

系统集成路由器OSPF动态、综合路由配置

实验任务&#xff1a;动态路由协议RIP、OSPF协议的内容和特点动态路由RIP、OSPF实验&#xff0c;建立拓扑pc1>>R1>>R2>>R3>>pc2&#xff0c;使pc1与pc2能相互通信&#xff0c;并配置PC端静默接口。熟悉配置vlan间路由技术&#xff1a;多层交换机虚拟接…

落地“旅游+”数字赋能:实现智慧旅游协同创新发展

经济的蓬勃发展&#xff0c;与之带来的是消费水平的不断提升&#xff0c;旅行已经成为我们日常生活中不可缺少的一项。在过去三年间&#xff0c;我们由于或这或那的原因&#xff0c;并无法真正实现一场说走就走的旅程。大家在过去的三年算是憋狠了&#xff0c;所以在今年&#…

计算专题(小计算题)

考点&#xff1a; 1.沟通渠道的总量为 n*(n-1)/2&#xff0c;其中 n 代表干系人的数量。 2.决策树计算/自制和外购决策-----EMV。 3.盈亏平衡计算。&#xff08;刚好不亏也不赚&#xff09; 【案例】假设某IT服务企业&#xff0c;其固定成本为30万元&#xff0c;每项服务的变…

用于测试FDIA在现实约束下可行性的FDIA建模框架(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 信息通信技术的发展和智能设备的引入使电力系统逐渐演变为电力信息物理系统&#xff0c;而信息层与物理层之间的深度耦合也加剧…

HashMap死循环详解

目录 一、数据插入原理 二、导致死循环的原因 三、解决方案 一、数据插入原理 由于JDK1.7中&#xff0c;HashMap的底层存储结构采用的是数组链表的方法 插入数据时候采用的是头插法 二、导致死循环的原因 此时线程T1&#xff0c;T2节点同时指向A节点&#xff0c;同时线程T1…

Spring Boot 整合 Swagger 教程详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

小白必看,吐血整理Facebook新手指南(二)

上篇文章咱们讲了关于FB广告的类型&#xff0c;今天咱们再来详细讲下如何设置FB广告、注意事项以及如何借助强大的工具&#xff08;SaleSmartly、ss客服&#xff09;监控广告效果、承接广告流量。话不多说&#xff0c;直接上干货选择你的目标 首先&#xff0c;前往您的广告管理…

虚拟化服务器和普通服务器的区别

随着云计算技术的快速普及&#xff0c;虚拟化技术作为其中的一项核心技术&#xff0c;也越来越受到了企业和个人用户的关注。虚拟化服务器相较于传统的物理服务器&#xff0c;具备更高的灵活性和可扩展性&#xff0c;但同时也存在一些不足之处。那么虚拟化服务器的优缺点有哪些…

[STM32F103C8T6]基于stm32的循迹,跟随,避障智能小车

目录 1.小车驱动主要是通过L9110S模块来驱动电机 motor.c 2.我们可以加入串口控制电机驱动(重写串口接收回调函数&#xff0c;和重定向printf) Uart.c main.c 3.点动功能 uart.c main.c 为什么使用的是HAL_Delay()要设置滴答定时器的中断优先级呢&#xff1f; 4.小车…