Web前端 Javascript笔记1

news2024/12/24 9:25:45

为什么学习 JavaScript?

JavaScript 是 web 开发人员必须学习的 3 门语言中的一门:

  1. HTML 定义了网页的内容
  2. CSS 描述了网页的布局
  3. JavaScript 控制了网页的行为

JavaScript 是可插入 HTML 页面的编程代码。

JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

JavaScript是弱数据语言

JavaScript 用法

  • HTML 中的 Javascript 脚本代码必须位于 <script> 与 </script> 标签之间。
  • Javascript 脚本代码可被放置在 HTML 页面的 <body> 和 <head> 部分中

1、<head> 中的 JavaScript 函数 

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction()
{
    document.getElementById("demo").innerHTML="我的第一个 JavaScript 函数";
}
</script>
</head>
<body>
<h1>我的 Web 页面</h1>
<p id="demo">一个段落</p>
<button type="button" onclick="myFunction()">尝试一下</button>
</body>
</html>

2、<body> 中的 JavaScript 函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //表达式,表达式最后都会算出一个值
  
        //语句
        
    </script>
</body>
</html>

3、 外部的 JavaScript

可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。

外部 JavaScript 文件的文件扩展名是 .js

<!DOCTYPE html>
<html>
<body>
<script src="xxx.js"></script>
</body>
</html>

JavaScript 输出

  • 使用 window.alert() 弹出警告框。
  • 使用 document.write() 方法将内容写到 HTML 文档中。
  • 使用 innerHTML 写入到 HTML 元素。
  • 使用 console.log() 写入到浏览器的控制台。
  • 括号里面可以识别html的标签

window.alert() ,window可以忽略不写 

<!DOCTYPE html>
<html>
<body>
<h1>我的第一个页面</h1><p>我的第一个段落。</p>
	
<script>window.alert(5 + 6);
</script>

</body>
</html>

 document.write() 

<!DOCTYPE html><html>
<body><h1>我的第一个 Web 页面</h1>
	<p>我的第一个段落。</p>
	<script>document.write(Date());
</script>

</body>
</html>

innerHTML

<!DOCTYPE html><html>
<body>

<h1>我的第一个 Web 页面</h1>

	<p id="demo">我的第一个段落</p>

<script>
	document.getElementById("demo").innerHTML = "段落已修改。";
</script>

</body>
</html>

console.log() 

<!DOCTYPE html>
<html>
<body>
<h1>我的第一个 Web 页面</h1>
<script>
let c=5;
console.log(c);
</script>

</body>
</html>

 JavaScript 注释

单行注释是以"//"开头的句子

多行注释以 /* 开始,以 */ 结尾。

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        //我是JavaScript注释

        /*
          多行注释
          多行注释
          多行注释
         */

    </script>
    <!--我是一般网页注释-->

</body>
</html>

JavaScript 字母大小写

JavaScript 对大小写是敏感的。

当编写 JavaScript 语句时,请留意是否关闭大小写切换键。

函数 getElementById 与 getElementbyID 是不同的。

同样,变量 myVariable 与 MyVariable 也是不同的


JavaScript声明变量

表达式,表达式最后都会算出一个值

JavaScript 使用关键字 var/let 来定义变量, 使用等号来为变量赋值

变量赋值:let /var 变量名=值 

var允许重复声明,而let不允许重复声明,基于let等重新声明就会报错

  • let声明的变量不可以在声明之前进行使用,但是var可以,这是不合理的,不合适由上至下运行代码
  • var存在变量提升的问题
  • var不存在块级作用域

let的出现是为了解决var的问题

console.log(1)  // => 这行代码就已经不会执行了
let a = 12
console.log(a)
let a = 13      // => 此行出错:SyntaxError: Identifier 'a' has already been declared
console.log(a)

console.log(a)
let a = 13
var a = 12  // => SyntaxError: Identifier 'a' has already been declared
console.log(a)

JavaScript 变量(存储数据的容器)

JavaScript 变量可用于存放值(比如 x=5)和表达式(比如 z=x+y)。

变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, totalvolume)。

int a=123   a是容器,123是数据 

  • 命名里具有数字、字母、下划线 $,不以数字开头
  • 变量必须以字母开头
  • 变量也能以 $ 和 _ 符号开头
  • 变量名称对大小写敏感(y 和 Y 是不同的变量)
  • 不能使用关键字保留字
  • js严格区分字母的大小写,html不区分大小写

  • 起名最好具有意义的

    遵循小驼峰命名法:findAgeByNmae

JavaScript 数据类型

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。

引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。

  • 其中NaN较为特殊,js规定它与任何数据比较均为false,包括其本身 
console.log(NaN == NaN) // false
console.log(NaN == 1) // false
  •  typeof()判断数据类型
  • 引用类型可以看作是数组啊什么的,与+运算符基本一致,需注意当与引用类型+时是看做字符串的拼接,但是-运算符只会视为计算,故与引用类型-时,只会返回NaN

JavaScript可以用强制类型转换 

1、隐式转换:

当运算符两端的数据类型不一致,会触发隐式转换

①、有字符串的时候:

console.log("22"+11) //2211      若是加号两边有一边是字符串,加号会把其他数据类型变成字符串

console.log("21"-11) //10       除了加号,其余其余运算符会把字符串转换成数字类型

②、没有字符串的时候:

非Number数据先调用Number()转成数字 再进行运算

Boolean中true为1,false为0

Null强制转换后为0

console.log(1 + true) // 2        console.log(1 + null) // 1

console.log(1 + false) // 1        console.log(1 + undefined) // NaN

2、显示转换

1、Number()

Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN

console.log(Number("345678pp"))//NaN
console.log(Number("345678"))//345678

如果该值无法转换为合法数字,则返回 NaN 

 console.log(true)//1
 console.log(False)//0
 console.log(new Date())//1712857336953
 console.log( "999")//999
 console.log( "999 888")//NaN

2、parseInt():

  • 如果第一个字符是数字,会解析直到遇到非数字结束
  • 如果第一个字符不是数字或者符号就返回NaN.
  • 允许前导和尾随空格。
console.log(parseInt("345678upp"))//345678
console.log(parseInt("upp3"))//NaN

 如果字符串以 "0x" 开头,则基数为 16(十六进制)

  • 如果字符串以 "0" 开头,则基数为 8(八进制)。此特性已弃用
var a = parseInt("10") + "<br>";//10
  var b = parseInt("10.00") + "<br>";//10
  var c = parseInt("10.33") + "<br>";//10
  var d = parseInt("34 45 66") + "<br>";//34
  var e = parseInt("   60   ") + "<br>";//60
  var f = parseInt("40 years") + "<br>";//40
  var g = parseInt("He was 40") + "<br>";//NaN

  var h = parseInt("10", 10)+ "<br>";//10
  var i = parseInt("010")+ "<br>";//10
  var j = parseInt("10", 8)+ "<br>";//8
  var k = parseInt("0x10")+ "<br>";//16
  var l = parseInt("10", 16)+ "<br>";//16

 3、parseFloat() 

  • 此函数确定指定字符串中的第一个字符是否为数字。如果是,它会解析字符串直到到达数字的末尾,并将数字作为数字而不是字符串返回。
  • 注释:如果第一个字符不能转换为数字,parseFloat() 返回 NaN。
  • 允许前导和尾随空格。

console.log(parseFloat("10"))//10
console.log(parseFloat("10。00"))//10
console.log(parseFloat("10.33"))//10.33
console.log(parseFloat("34 45 66"))//34
console.log(parseFloat("   60   "))//60
console.log(parseFloat("40 years"))//40
console.log(parseFloat("He was 40 "))//NaN
 console.log(parseFloat(8))//8

 4、字符串转化

String()

String(Boolean(0))//false
String(Boolean(1))//true
String(new Date())//Fri Apr 12 2024 01:48:15 GMT+0800 (中国标准时间)
string("12345")//12345
string (1234)//1234

toString()

变量.toString(进制)

let num = 15;
console.log(num.toString())//15

 不同进制

var num = 15;
var a = num.toString();//15
var b = num.toString(2);//1111
var c = num.toString(8);17
var d = num.toString(16);//f

js d的符号 

算数运算符: + - * / %
赋值运算符: += -= *= /= %= 

比较运算符:< > <= >= == === !==

2=="2" true,只会判断值是否相同
2==="2" false 会判断数据类型与值是否会相同

=== 判断两边数据是否全等,即数据类型与值均相等,而隐式转换是在两者数据类型不同时才触发的。而 == 只判断是否相等

console.log([] == []) // false,返回false,因为引用数据类型比较的是地址
console.log([] == {}) // false
console.log([] == true) // false
console.log([1,2] == "1,2") // true
console.log([1] == 1) // true

String 中的内容为字母、符号等编码

若为等长字母

console.log("a" > "b") // false

若为不等长字母,比较同位置字母大小,根据ACSII码直至做出判断

console.log("ab" > "b") // false
console.log("abc" > "abb") // true

符号同理,都是根据ACSII码进行判断

console.log(":" > "?")//false

一元运算符:

i++   赋值运算符的优先级大于,先赋值运算,
++i  前加加>赋值运算符,先加加

let a=2
let k=a++
console.log(a,k)
let j=++k
console.log(k,j)

运行结果:

3   2

3   3 

逻辑运算符:&& || !


JavaScript流程控制

  //顺序、选择,循环

        //顺序:代码自上而下,从左到右

        //选择(分支):面对不同条件,来执行不同的代码

        //条件只要最终返回的是布尔值就好了       

1、条件选择

//if(条件){

            //满足条件时所执行的代码

        //}

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
            let age = Number(prompt("enter the age="))
            if(age>=18){
                console.log("adault!!!!")
                document.write("adault!!!!")
            }else{
                document.write("<h1>unadault!!!!</h1>")
            }
    </script>
</body>
</html>

 多条件

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
            let t = Number(prompt("enter the time="))
             if(t<=4 &&t>=0){
                 
                 document.write(`现在是凌晨${t}点`)
             }
             else if(t>4 &&t<=11){
                document.write(`现在是上午${t}点`)
             }
             else if(t>11 &&t<=13){
                document.write(`现在是中午${t}点`)
             }
             else if(t>13 &&t<=17){
                document.write(`现在是下午${t}点`)
             }
             else{
                document.write(`现在是晚上${t}点`)
            
             }
    </script>
</body>

 //三目运算符:条件?满足条件时执行的的代码:不满足条件时执行的代码 

   <script>
    //let a=21

    //age>18?document.write("成年了"):document.write("未成年")



    let shu = Number(prompt("enter the time="))

    shu>10?document.write(`${shu}`):alert("0"+shu)
   </script>

练习 

    <script>
        let y=Number(prompt("请输入年份以此判断是闰年还是平年="))
       if((y%4==0 &&y%100!=0)|| y%400==0){
        document.write(`<h1>佳人们${y}是闰年!!</h1>`)
       }else{
        document.write(`<h1>佳人们${y}是平年!!</h1>`)
    }

    </script>

2、循环

 while循环

       /* let i=0
         while(i<=10){//终止条件
             //初始值变化
            document.write(i)
             i++
         }*/

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
 
        let sum=0
        let i=0
        while (i<=100){
            sum+=i
            i++
        }
        document.write(sum)
       

        let s=0//打印偶数和
        let j=0
        while(j<=100){
            if(j%2==0){
                s+=j
            }
            else{
                continue
            }
            j=j+1
        }
        document.write("<br/>"+s)
        //break,continue

    </script>
</body>
</html>

for循环

    //for(声明临时变量;循环条件;变化值{

        //}

        // for(let i=1;i<=100;i++){

        //     document.write("-"+2)

        // }

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        
        s=0
        for(let i=1;i<=100;i++){
            if(i%2===0){
                s+=i
            }
            
        }
      
    </script>
</body>
</html>

do while 语句 

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        let i=1
        do{
            document.write("hello jjss")
            i++
        }while(i<1)
    </script>
</body>
</html>

嵌套循环
九九乘法表:

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        span{
            text-align: center;
            height: 50px;
            width: 100px;
            line-height: 50px;
            background-color: pink;
            border-radius: 10px;
            display: inline-block;
            margin: 2px;
        }
    </style>
</head>
<body>
    <script>

        for(let i=1;i<=9;i++){
            for(let j=1;j<=i;j++){
                document.write(`<span>${j}*${i}=${j*i}</span>`)
            }document.write("<br/>")
        }

        }
    </script>
    
</body>
</html>

3、switch语句

switch(n)
{
    case 1:
        执行代码块 1
        break;
    case 2:
        执行代码块 2
        break;
    default:
        与 case 1 和 case 2 不同时执行的代码
}
var d=new Date().getDay();
switch (d)
{
    case 6:x="今天是星期六";
    break;
    case 0:x="今天是星期日";
    break;
    default:
    x="期待周末";
}
document.getElementById("demo").innerHTML=x;

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

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

相关文章

Qt实现XYModem协议(一)

1 概述 Kermit文件运输协议提供了一条从大型计算机下载文件到微机的途径。它已被用于进行公用数据传输。 其特性如下: Kermit文件运输协议是一个半双工的通信协议。它支持7位ASCII字符。数据以可多达96字节长度的可变长度的分组形式传输。对每个被传送分组需要一个确认。Kerm…

【剪映专业版】05常见视频专业术语

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 视频格式与编码 剪映支持导出MP4、MOV格式 视频分辨率与像素 常见分辨率&#xff1a;1080P 1080P&#xff1a;日常剪辑可用&#xff0c;日常拍摄时选择该分辨率 4K&#xff1a;比如演唱会大屏 剪映支持导出&#xff…

Ubuntu安装VMVare Workstation pro 17.5.1

由于需要装Kali&#xff0c;我电脑是Ubuntu单系统&#xff0c;所以只能使用linux版本的虚拟机&#xff0c;通过这种方式来安装虚拟机和Kali镜像。 参考CSDN博客资料&#xff1a;https://blog.csdn.net/xiaochong0302/article/details/127420124 github代码资料&#xff1a;vm…

less+rem+媒体查询布局(主流)

rem适配布局 一.rem基础二.媒体查询1.概念2.语法&#xff08;1&#xff09;.mediatype查询类型&#xff08;2&#xff09;.关键字&#xff08;3&#xff09;.媒体特性&#xff08;4&#xff09;.应用 3.媒体查询rem实现元素动态大小变化4.引入资源&#xff08;针对不同媒体查询…

学习MQ异步

1.MQ异步调用的优势 事件驱动模式&#xff1a; 优势&#xff1a; 总结&#xff1a; 2.初识MQ 核心概念以及结构&#xff1a; 常见的消息模型&#xff1a; 基本消息队列模型&#xff1a; 生产者代码&#xff1a; Testpublic void testSendMessage() throws IOException, Timeo…

图片尺寸在线修改怎么改?修改图片方法详解

图片尺寸在线修改怎么改&#xff1f;在数字化时代&#xff0c;图片尺寸的调整与修改已成为我们日常生活和工作中不可或缺的一部分。无论是为了满足特定平台的上传要求&#xff0c;还是为了提升图片的视觉效果&#xff0c;对图片尺寸进行在线修改都显得尤为重要。本文将详细介绍…

推荐系统学习记录——数据稀疏性衡量

在推荐系统中&#xff0c;数据稀疏性通常通过计算用户-物品交互矩阵的稀疏度来衡量。用户-物品交互矩阵是一个二维矩阵&#xff0c;其中行表示用户&#xff0c;列表示物品&#xff0c;矩阵中的每个元素表示用户对物品的交互情况&#xff08;如评分、点击、购买等&#xff09;&a…

专访云仓酒庄《综合品酒师》培训带领酒水行业专业与形象新篇章

在春意盎然的季节里&#xff0c;云仓酒庄成功举办了首届《综合品酒师》培训&#xff0c;吸引了业界的广泛关注。本次培训不仅为酒水行业注入了新的活力&#xff0c;更在提升行业专业性和形象方面迈出了坚实的步伐。我们有幸采访到了云仓酒庄的负责人&#xff0c;就此次培训的背…

使用DNSTOP进行DNS流量分析

一、前言 dnstop 是一个用于监听和解析 DNS 流量的实用工具。它可以帮助您监视网络中的 DNS 查询&#xff0c;并提供有关域名、IP 地址、查询类型等信息的实时统计。 当我们在分析DNS 服务器日志时&#xff0c;想去了解哪些用户在使用DNS 服务器&#xff0c;同时也希望对DNS …

完美提升Stable Diffusion生成质量和效率!UniFL:统一反馈学习框架(字节中山)

文章链接&#xff1a;https://arxiv.org/pdf/2404.05595 git链接&#xff1a;https://uni-fl.github.io/ 扩散模型已经彻底改变了图像生成领域&#xff0c;导致高质量模型和多样化的下游应用不断涌现。然而&#xff0c;尽管取得了重大进展&#xff0c;当前竞争性解决方案仍然存…

李廉洋;4.12现货黄金,美原油最新走势分析及策略。

现货黄金在美盘末将历史新高刷至2377美元/盎司。美国3月份PPI指数较上年同期上升2.1%&#xff0c;为11个月来的最高增幅&#xff0c;这份数据加之此前火爆的CPI指数&#xff0c;为美联储实现2%目标所面临的坎坷之路奠定了基础。不过&#xff0c;PPI报告中的细节让担心通胀再度加…

【Go语言快速上手(一)】 初识Go语言

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Go语言专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; Go快速上手 1. 前言2. Go语言简介(为…

spring Task 定时任务

导入maven坐标 spring-context&#xff08;已存在&#xff09; <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.34</version> <!-- 请根据需要选择合适的版本 -->…

考研数学|660对比真题的难度如何?有必要做比660再难的题吗?

660整体难度属于基础阶段到强化阶段。而且是选填部分的题目&#xff0c;所以还是要做一些其他题 然后说一下推荐的习题册&#xff1a;基础不好先做1800、强化之前660&#xff0c;强化可选880/1000题。 首先&#xff0c;传统习题册存在的一个问题是题量较大&#xff0c;但难度波…

每日两题 / 1.两数之和 49.字母异位词分组(LeetCode热题100)

1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 暴力解法&#xff1a; O ( N 2 ) O(N^2) O(N2)遍历数组&#xff0c;找两个数相加为target O ( N ) O(N) O(N)解法&#xff1a;将所有数排序&#xff0c;并记录这些数的下标&#xff0c;双指针从左右向中间走。指向的两数…

双调欧几里得旅行商问题的最优算法设计与实现

一、背景 双调欧几里得旅行商问题&#xff08;Double Bitonic TSP&#xff09;是欧几里得旅行商问题&#xff08;Euclidean TSP&#xff09;的一个特殊版本。在标准的欧几里得旅行商问题中&#xff0c;我们需要找到一条最短的路径&#xff0c;这条路径要求访问者从一个城市出发…

图像分类——综合车辆数据集

一、重要性及意义 智能交通管理&#xff1a;车辆图像分类是智能交通系统&#xff08;ITS&#xff09;中的关键组成部分。通过对监控摄像头捕捉到的车辆图像进行自动分类&#xff0c;系统能够实时识别车辆类型、颜色、品牌等信息&#xff0c;进而实现交通流量监控、违章行为检测…

neo4j使用详解(十八、java driver使用及性能优化<高级用法>——最全参考)

Neo4j系列导航&#xff1a; neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 neo4j java Driver等更多 1.依赖引入 <dependency><groupId>org.neo4j.driver</groupId><…

【剪映专业版】06音频和图片格式

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 音频格式 最常见格式&#xff1a;MP3和WAV 转换工具&#xff1a;在线转换或者格式工厂&#xff08;免费&#xff0c;支持音频、视频、图片、文档等转换&#xff0c;好工具&#xff09; 图片格式