【JavaEE】JavaScript(基础语法)1

news2024/11/25 10:27:19

努力经营当下,直至未来明朗!

文章目录

  • 前言
  • 一、JavaScript初识(简单了解就行,没时间跳过)
  • 二、【JS的代码相关】
    • 【注释】
    • 【输入输出】
  • 三、语法
    • 1. 变量
    • 2. 【基本数据类型】
  • THINK


前言

一个人最大的痛苦就是对自己无能的愤怒!

Hi,这里是快要秃头的宝贝儿!(但是秃头也要学习啊!)
秃头
本文主要是介绍JS相关的一些内容,目的是能够简单了解并读懂前端代码。

顺便补充两个招聘网站:
【招聘网站:boss直聘、拉钩】


一、JavaScript初识(简单了解就行,没时间跳过)

  1. 【JS:JavaScript】
    静态页面使用html和CSS是ok的;但是现在的网页要求更加复杂,就就需要webapp、JS的交互行为了。

  2. JavaScript是什么?

JavaScript (简称 JS)

  • 是世界上最流行的编程语言之一
  • 是一个脚本语言, 通过解释器运行
  • 主要在客户端(浏览器)上运行, 现在也可以基于 node.js 在服务器端运行
  1. JS主要是用来开发前端的,但是也能干其他事情。JS现在是一个“通用”的编程语言。

1)网页开发(老本行,可以作出各种优秀的特效)
2)网页游戏(开发页游两种主要方式:一种是基于flash,一种是基于html5+JS(canvas api基础上构建出一些游戏引擎))
3)服务器端开发:JS的代码执行依赖JS的引擎(引擎就相当于JVM一样)。目前最主流的引擎是谷歌搞的v8 worker引擎(也就是Chrome中内置的引擎)。有大佬把v8引擎提取出来封装成一个单独的程序node.js(相当于是一个封装过的JS引擎,不光能够解释执行JS代码,同时也给JS提供了一些API来进行系统编程和网络编程,这就赋予了JS基于node.js来编写服务器程序的能力)

【虽然node.js小火了一下,但是并没有人使用这个来做商业级的项目后端,一般就是用这个东西搭建个内部系统或者用来作为前端程序员的测试服务器】

4)还可以开发桌面程序(客户端程序):得益于Electron框架(github搞的,但是执行效率较低,VSCode集合微软全力优化,是Electron执行效率的天花板了),也是基于node.js提供了一些和界面相关的功能,相当于是把浏览器内核给打包到一个应用程序中了。
5)移动端app开发(比客户端更靠谱一些):因为Android和IOS都内置了webkit(Chrome浏览器内核)。
围绕着这块有很多开发方案,如:uniapp,clouda,weex,react native…

【综上,JS服务器啃不动,客户端开发又差强人意,主要战场还是网页前端开发。】

  1. 补充:
    ① 编译型语言:先把源代码转成二进制的机器指令,直接让CPU执行。 如C/C++/Go等
    ② 解释型语言:由对应的引擎来对代码进行一行一行的解释,边解释边执行。如JS/shell等
    ③ 如Python/Java/PHP 是半编译半解释型语言
    (但是目前“编译”和“解释”的概念已经越来越模糊了)

【当前所讨论的JS只是运行在浏览器上能够开发网页前端的(不考虑node.js)】

  1. 开发网页前端的JS的组成
    ① ECMAScript(简称 ES): JavaScript 语法
    ② DOM: 页面文档对象模型, 对页面中的元素进行操作 (操作页面内容)
    ③ BOM: 浏览器对象模型, 对浏览器窗口进行操作 (操作页面窗口)
    (后两者都是浏览器给JS提供的API)

光有 JS 语法, 只能写一些基础的逻辑流程.
但是要想完成更复杂的任务, 完成和浏览器以及页面的交互, 那么就需要 DOM API 和 BOM API。 但是这主要指在浏览器端运行的 JS, 如果是运行在服务端的 JS , 则需要使用 node.js 的 API, 就不太需要关注 DOM 和 BOM。

  1. JavaScript 运行过程:
  • 编写的代码是保存在文件中的, 也就是存储在硬盘(外存上).
  • 双击 .html 文件浏览器(应用程序)就会读取文件,把文件内容加载到内存中(数据流向: 硬盘 => 内存)
  • 浏览器会解析用户编写的代码, 把代码翻译成二进制的,能让计算机识别的指令(解释器的工作)
  • 得到的二进制指令会被 CPU 加载并执行(数据流向: 内存 => CPU)
  1. JS发展可以参考:JS诞生记

二、【JS的代码相关】

  1. JS的hello world (JS也是可以嵌入到HTML中执行的)

alert是弹出对话框并显示内容,单双引号都ok!!(放在script中)

在这里插入图片描述

  1. js有多种方式来和html结合执行:
    ① 内嵌式:把JS代码写到script标签中,如上
    ② 内联式:把JS代码放到标签的特殊属性中
    1

③ 外部式:把JS代码写到单独的.js文件中,在html中引入该js文件,使用script标签引入。

(这样做的好处就是可以把公共的js代码提取出来,方便多个页面的重复使用)【实际开发中最常见】

2
(这里的a.js就类似于C的include,本质就是把对应的js代码拷贝到script标签里)


【注释】

  1. JS中 // 和/* */ 都是ok的,但是最主要使用的是//
  2. 区分:

① html注释 <!-- -->
② CSS注释/* */
③ JS注释// + /* */

注释:可以使用ctrl+/


【输入输出】

【输入】:prompt 弹出一个输入框

// 弹出一个输入框
prompt("请输入您的姓名:");

【输出】

  1. alert:弹出一个警示对话框, 输出结果。
    弹框在真实项目中一般是不太建议使用的,弹出对话框是比较影响用户体验的。
  2. console.log:打印日志到控制台(所以在页面中看不到),打开开发者工具:右键->检查(或者直接按 f12,笔记本需要加按fn)

23

console.log:
(输入时直接打log就行)
【这里输出的内容是给程序员看的,帮助程序员进行调试】


三、语法

(JS语法很多都和Java以及C非常相似,所以主要关注不一样的部分)

1. 变量

  1. 变量是编程语言中非常核心的概念,JS中主要由两种方式来表示变量。
    5
  2. var、let都是关键字,仅仅表示后面的名字是个变量,不表示类型。但是变量是有类型的,只是没有显式的写出来,具体类型是根据=后面的值的类型来进行区分的。

① var是老式的写法,里面坑很多;
let是新式写法,是当前推荐的写法,使用let变量的各种特性就和java/C里的变量的特征基本一样。(所以目前先无脑写let)

  1. 【其实现在很多语法都支持类似的写法(定义变量,但不显式声明类型)

如:C++: auto name = “hello”;
Java11+ : var name = “hello”;
Go: name:=”hello”; (:=海象运算符)
——类型自动推导

(JS中分号可以省略,但是建议加上)

  1. JS中变量类型是动态的!!也就是说:运行过程中变量类型可以改变
    6

① 动态通常指“运行时”,静态通常指“编译期”
② 类型能不能改和是否使用“类型自动推导”语法无关,Java和C++都可以自动类型推导,但是仍然是“静态类型”)

  1. 动态类型的好坏?

(如C、C++、Java、Go、Rust…都是静态类型, 而如JS、Python、PHP、Ruby…都是动态类型。)

① 动态类型提供了更加灵活的编程方式,写一段代码就可以同时支持多种类型的数据(相当于自带泛型一样)。
② 但是动态类型的问题是类型太灵活了,小程序还好;如果是大型项目,多个模块、多个团队协同开发,使用动态类型就比较吃亏了。

2. 【基本数据类型】

JS 中内置的几种类型:

  • number: 数字. 不区分整数和小数.
  • boolean: true 真, false 假.
  • string: 字符串类型.
  • undefined: 只有唯一的值 undefined,表示未定义的值.
  • null: 只有唯一的值 null, 表示空值.
  1. number:不区分整数/浮点数:

7

  1. infinity: 无穷大,一般就是浮点数除以0算出的结果。(注意:负无穷大不是“无穷小”(无穷小是趋近于0的数)

  2. NaN: 表示当前的结果不是一个数字(not a number)
    8

  3. string:字符串
    JS中字符串可以用’来表示,也可以用”表示:
    如果字符串中有”,那么字符串就可以使用’来引用,反之亦然。
    (JS中的转义字符和Java/C中是一样的)
    9
    10

  4. 字符串典型操作:
    1)求字符串长度:length——意思是该字符串包含几个字符,而不是“字节”。一个字符里面可以包含多个字节!!
    11

【补充:“张三”字符串的长度:】
Java中:2(单位字符);
C语言中:VS下(Windows)是4(单位是字节),GBK编码,一个中文俩字节;
Linux是6(单位字节),UTF8编码,一个中文三个字节。
So:一定不要记一个汉字两个字节!

2)字符串拼接:直接使用 + 进行拼接
12

同理:该操作会生成新的字符串对象。
数字和字符串也可以进行+拼接,数字会隐式的被转成字符串类型。

3)字符串比较:JS中比较两个字符串内容是否相同直接使用== 就行。

(注:大部分编程语言都是使用 ==来比较两个字符串内容,但是C和Java除外,C使用strcmp,而Java使用equals/compareTo)

  1. Boolean类型:
    JS中boolean类型是可以隐式转成number类型的,true转为1,false转为0.
    13

(注:Java中无法编译通过,因为Java中禁止Boolean和整数混合运算
【补充:经验证,boolean类型可以使用+和字符串进行拼接,JS和Java中都是ok的】

  1. 像Java这种不太支持(不是100%不支持,如整数+String就隐式把int转为String了)隐式类型转换的语言称为“强类型语言”(数据的区分度更高,界限更明确);
    而像JS这种比较支持隐式类型转换的语言称为“弱类型语言”(数据区分度较低,界限模糊)。

  2. 注意区分:动态类型/静态类型 和 强类型/弱类型 这两组概念,不要搞混了。
    15

  3. undefine类型:访问某个变量没有被定义,此时结果就是undefine。
    16

  4. null类型:访问的变量是存在的,但是访问的变量的值是空值。
    17

  5. 注:使用undefined和数字进行算术运算后的结果是NaN:
    18

  6. 如果拿undefined和字符串进行拼接,就会把undefined当成字符串。
    19


后续详见下章!
55


THINK

  1. 基本数据类型!!(重要)
  2. 动态/静态类型(运行时变量类型可以改变) 与 强类型/弱类型(比较会隐式转换)
  3. let变量关键字!

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

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

相关文章

信贷风控NCL净损失率的指标实现与应用

在金融信贷业务的风险控制过程中&#xff0c;有一项财务指标发挥着比较重要的信息参考价值&#xff0c;可以有效衡量某个月份放款金额在形成呆账后的资金损失情况&#xff0c;其中呆账指的是信贷逾期180天以上&#xff0c;这个指标便是NCL&#xff08;Net Credit Loss&#xff…

大家都在用的福昕阅读器 foxit 你还不知道吗? 祛除水印PDF转换全功能解锁…

趣味拓展 什么字大家看了都说没用&#xff1f; (答案在文末) 引言 福昕阅读器是一款高级PDF编辑器&#xff0c;查看目录、去除水印、编辑文本、转换格式等都是可以用到的~ 小编第一次使用的时候是用来查看pdf文档目录的&#xff0c;当时未使用破解版&#xff0c;后来循序渐进…

基于PHP+MySQL中小学生科学实验展示网站的设计与实现

中小学生科学实验展示网站能够通过互联网得到广泛的、全面的宣传,让尽可能多的人积极的参加到科学实验行列中来,不仅为需要的人提供了服务,而且锻炼了自己,同时能够让中小学生对科学实验的兴趣有很大的提高 PHP中小学生科学实验展示网站是一个科普类型的网站,系统通过PHp&#…

[附源码]Python计算机毕业设计SSM客户信息管理(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

模拟电子技术(四)放大电路的频率响应

&#xff08;四&#xff09;放大电路的频率响应电路理论基础知识复习频率响应基本概念两个无源频率响应的单元电路波特图&#xff08;幅频、相频&#xff09;高、低同电路对比晶体管的高频等效模型单管放大电路的频率响应研究信号频率的变化对放大电路性能的影响也就是电路对输…

Linux零基础入门(二)Linux基础命令

Linux零基础入门&#xff08;二&#xff09;Linux基础命令前言Linux基础命令一 Linux的目录结构1 Linux路径的描述方式二 Linux命令入门1 Linux命令基础格式2 ls命令3 HOME目录和工作目录4 ls命令的参数ls 命令的 -a选项ls命令的 -l选项ls命令选项的组合使用ls选项和参数的组合…

基于人工势场法的二维平面内无人机的路径规划的matlab仿真,并通过对势场法改进避免了无人机陷入极值的问题

目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 人工势场法原理是&#xff1a;首先构建一个人工虚拟势场&#xff0c;该势场由两部分组成&#xff0c;一部分是目标点对移动机器人产生的引力场&#xff0c;方向由机器人指向目标点&#xf…

C语言——malloc开辟矩阵

目录 用动态内存开辟矩阵 矩阵初始化 用动态内存开辟矩阵 动态内存更多的知识在这篇博客&#xff0c;本文将介绍用malloc开辟矩阵。 malloc是C语言中用来动态开辟内存的&#xff0c;通过malloc函数可以向计算机申请一串连续的内存空间。 因为malloc开辟的内存在堆上&#…

数据链路层-封装成帧

封装成帧 数据链路层给上层交付的协议数据单元添加上帧头和帧尾使之成为帧帧头和帧尾包含有重要的控制信息帧头和帧尾的作用之一就是帧定界 透明传输 数据链路层对上层的交付的传输数据没有任何的限制&#xff0c;就好像数据链路层不存在一样面向字节的物理链路使用字节填充(字…

manjaro (gnome) 记录 2 常用配置与快捷键介绍

manjaro &#xff08;gnome&#xff09; 记录 2 常用配置与快捷键介绍 初manjaro 记录 2 常用配置与快捷键介绍安装 vim 文本编辑器配置中文输入法安装谷歌拼音配置输入法添加快捷键&#xff1a;gnome 终端通过命令&#xff1a;gnome-terminal 可以打开 gnome 终端窗口设置快捷…

学习Hadoop(一)——搭建hadoop集群

最近开始学习大数据的相关知识&#xff0c;要学习大数据就不得不提到Hadoop。 一般来说学习一门新的知识&#xff0c;很多都是先理论再实践 我则不然&#xff0c;先实践&#xff0c;再了解理论 目录一、VM网络设置二、安装Centos72.1 网络配置2.2 设置主机名2.3 hosts设置2.4…

【在SpringBoot项目中使用Validation框架检查数据格式】

目录 1. 添加依赖 2. 检查POJO类型的请求参数 3. 关于响应的消息文本 4. 快速失败 5. 检查未封装的请求参数 1. 添加依赖 在pom.xml中添加spring-boot-starter-validation依赖项&#xff1a; <!-- Spring Boot Validation框架&#xff0c;用于检查数据格式 --> &…

ctfshow 月饼杯

寒假打算认真学习一下&#xff0c;就先从半个月的刷题开始。 文章目录web1_此夜圆web2_故人心web3_莫负婵娟web1_此夜圆 题目给的有附件&#xff0c;一看就是php反序列化字符串逃逸(应该是签到题)。 源码&#xff1a; <?php error_reporting(0);class a {public $uname;…

负载均衡组件Ribbon核心-@LoadBalanced-下

引言 书接上篇 负载均衡组件Ribbon核心-LoadBalanced-上 我们讲完了理解LoadBalanced注解的知识准备&#xff0c;接下来就是LoadBalanced注解详解。 LoadBalancerAutoConfiguration 激活 LoadBalanced 注解功能起点来至LoadBalancerAutoConfiguration自动配置类&#xff0c;S…

uni-app 超详细教程(三)(从菜鸟到大佬)

本文中内容为&#xff1a; 1. 支付功能&#xff08;微信支付&#xff0c;支付宝支付&#xff09; 2. 项目打包&#xff1a;&#xff08;APP打包&#xff0c;H5打包&#xff0c;微信小程序打包&#xff09; 一&#xff0c;uni - app 的支付功能 一、微信支付 1、登录微信开…

如何在Ubuntu20.04上安装RDP远程

计算机最有意思的事情&#xff0c;就是你可以用任何方式去实现跨设备连接。例如google通过webrtc实现远程桌面&#xff0c;Linux则是常用ssh等。在远程桌面上一般分为windows的RDP和Unix/Linux的VNC。 常规在windows上winr输入mstsc,我们通过微软的RDP技术去远程计算机。RDP和…

C#Lambda让代码变得更加简洁而优雅

Using a lambda expression&#xff0c;we can make the code more compact and elegant。   在使用lambda表达式时&#xff0c;可以使代码更加简洁和优雅。 Lambda&#xff0c;希腊字母λ&#xff0c;在C#编程语言中&#xff0c;被引入为Lambda表达式&#xff0c;表示为匿名…

使用[阿里问题定位神器]Arthas入门

目录 注意 安装 在线安装 离线安装 目前我接触到的实用命令 dashboard heapdump thread jad stack trace 注意 arthas本身有一定的性能消耗&#xff0c;所以生产环境小心使用 arthas本身有一定的性能消耗&#xff0c;所以生产环境小心使用 arthas本身有一定的性能…

【Linux】万字总结Linux 基本指令,绝对详细!!!

文章目录 Linux 基本指令 ls 指令 alias 指令 cd指令 pwd 指令 clear指令 touch 指令 mkdir 指令&#xff08;重要&#xff09; rmdir指令 && rm 指令&#xff08;重要&#xff09;&#xff1a; man指令&#xff08;重要&#xff09; cp指令&#xff08;重…

闭关三个月,腾讯大咖手写Framework最新源码笔记,从基础到进阶直接封神

什么是Android Framework 我们首先给出Android Framework的定义&#xff0c;然后再对该定义给出详细的解释。 Android Framework包含三个内容&#xff1a;服务端、客户端、linux驱动 服务端 Android Framework服务端包括两个很重要的类&#xff1a;WindowManagerService (W…