js基础篇

2023-11-02

JavaScript语法

字面量 也叫直接量,就是程序中直接使用的,是变量后面的值
变量就是声明一个未知可变的量 变量声明符合unicode编码所有变量符合utf-8的编码都可以

标识符命名标准:

1.必须是字母,数字,_,¥开头
2.以驼峰命名规则
3. 首单词小写 后面的单词首字母大写 -*/

变量的作用域

在函数之外声明的变量,叫做全局变量,因为它可被当前文档中的任何其他代码所访问。
在函数内部声明的变量,叫做局部变量,因为它只能在当前函数的内部访问。

变量提升

JavaScript 变量的另一个不同寻常的地方是,你可以先使用变量稍后再声明变量而不会引发异常。这一概念称为变量提升;JavaScript
变量感觉上是被“提升”或移到了函数或语句的最前面。但是,提升后的变量将返回 undefined
值。因此在使用或引用某个变量之后进行声明和初始化操作,这个被提升的变量仍将返回 undefined 值。

  例子1
 
console.log(x === undefined); // true
var x = 3;


 例子2

//will return a value of undefined
var myvar = "my value";

(function() {
  console.log(myvar); // undefined
  var myvar = "local value";
})();
上面的例子,也可写作:

 例子1

var x;
console.log(x === undefined); // true
x = 3;
 
例子2

var myvar = "my value";
 
(function() {
  var myvar;
  console.log(myvar); // undefined
  myvar = "local value";
})();

由于存在变量提升,一个函数中所有的var语句应尽可能地放在接近函数顶部的地方。这个习惯将大大提升代码的清晰度。

常量(Constants)

你可以用关键字 const
创建一个只读的常量。常量标识符的命名规则和变量相同:必须以字母、下划线(_)或美元符号($)开头并可以包含有字母、数字或下划线。

const PI = 3.14;

常量不可以通过重新赋值改变其值,也不可以在代码运行时重新声明。它必须被初始化为某个值。 常量的作用域规则与 let
块级作用域变量相同。若省略const关键字,则该标识符将被视为变量。 在同一作用域中,不能使用与变量名或函数名相同的名字来命名常量。

例如:
// 这会造成错误
function f() {};
const f = 5;

// 这也会造成错误
function f() {
  const g = 5;
  var g;

  //语句
}

然而,对象属性被赋值为常量是不受保护的,所以下面的语句执行时不会产生错误。

const MY_OBJECT = {"key": "value"};
MY_OBJECT.key = "otherValue";

同样的,数组的被定义为常量也是不受保护的,所以下面的语句执行时也不会产生错误。

const MY_ARRAY = ['HTML','CSS'];
MY_ARRAY.push('JAVASCRIPT');
console.log(MY_ARRAY); //logs ['HTML','CSS','JAVASCRIPT'];

数据类型

最新的 ECMAScript 标准定义了8种数据类型:

5种基本数据类型:

1 布尔值(Boolean),有2个值分别是:true 和 false.
2 null , 一个表明 null 值的特殊关键字。JavaScript 是大小写敏感的,故 null 与 Null、NUL完全不同。
3 undefined ,和 null 一样是一个特殊的关键字,undefined 表示变量未定义时的属性。
4 数字(Number),整数或浮点数,例如: 42 或者3.14159。
5 字符串(String),字符串是一串表示文本值的字符序列,例如:“Howdy” 。

3种引用数据类型:

1 以及对象(Object)。
2 function 函数
3 array 数组

虽然这些数据类型相对来说比较少,但是通过他们你可以在程序中开发有用的功能。对象(Objects)
和函数(functions)是这门语言的另外两个基本元素。你可以把对象当作存放值的一个命名容器,然后将函数当作你的程序能够执行的步骤。

字面量 (Literals)

布尔字面量 (Boolean literals)
不要混淆作为布尔对象的真和假与布尔类型的原始值true和false。布尔对象是原始布尔数据类型的一个包装器。参见 布尔对象。

整数 (Integers)

整数可以用十进制(基数为10)、十六进制(基数为16)、八进制(基数为8)以及二进制(基数为2)表示。
十进制整数字面量由一串数字序列组成,且没有前缀0。 八进制的整数以 0(或0O、0o)开头,只能包括数字0-7。
十六进制整数以0x(或0X)开头,可以包含数字(0-9)和字母 a~f 或 A~F。 二进制整数以0b(或0B)开头,只能包含数字0和1。
严格模式下,八进制整数字面量必须以0o或0O开头,而不能以0开头。

整数字面量举例:

0, 117 and -345 (十进制, 基数为10)
015, 0001 and -0o77 (八进制, 基数为8) 0x1123,
0x00111 and -0xF1A7 (十六进制, 基数为16或"hex")
0b11, 0b0011 and -0b11 (二进制,基数为2)

浮点数字面量 (Floating-point literals)

浮点数字面值可以有以下的组成部分:

一个十进制整数,可以带正负号(即前缀“+”或“ - ”), 小数点(“.”),
小数部分(由一串十进制数表示),
指数部分 -指数部分以“e”或“E”开头,后面跟着一个整数,可以有正负号(即前缀“+”或“-”)。
浮点数字面量至少有一位数字,而且必须带小数点或者“e”(大写“E”也可)。

简言之,其语法是:
[(+|-)][digits][.digits][(E|e)[(+|-)]digits]
例如:
3.14      
-.2345789 // -0.23456789
-3.12e+12  // -3.12*1012
.1e-23    // 0.1*10-23=10-24=1e-24

对象字面量 (Object literals)

对象字面值是封闭在花括号对({})中的一个对象的零个或多个"属性名-值"对的(元素)列表。你不能在一条语句的开头就使用对象字面值,这将导致错误或产生超出预料的行为,
因为此时左花括号({)会被认为是一个语句块的起始符号。(译者:这 里需要对语句statement、块block等基本名词的解释)
以下是一个对象字面值的例子。对象car的第一个元素(译注:即一个属性/值对)定义了属性myCar;第二个元素,属性getCar,引用了一个函数(即CarTypes(“Honda”));第三个元素,属性special,使用了一个已有的变量(即Sales)。

var Sales = "Toyota";

function CarTypes(name) {
  return (name === "Honda") ?
    name :
    "Sorry, we don't sell " + name + "." ;
}

var car = { myCar: "Saturn", getCar: CarTypes("Honda"), special: Sales };

console.log(car.myCar);   // Saturn
console.log(car.getCar);  // Honda
console.log(car.special); // Toyota

更进一步的,你可以使用数字或字符串字面值作为属性的名字,或者在另一个字面值内嵌套上一个字面值。如下的示例中使用了这些可选项。

var car = { manyCars: {a: "Saab", "b": "Jeep"}, 7: "Mazda" };

console.log(car.manyCars.b); // Jeep
console.log(car[7]); // Mazda

对象属性名字可以是任意字符串,包括空串。如果对象属性名字不是合法的javascript标识符,它必须用"“包裹。属性的名字不合法,那么便不能用.访问属性值,而是通过类数组标记(”[]")访问和赋值。

var unusualPropertyNames = {
  "": "An empty string",
  "!": "Bang!"
}
console.log(unusualPropertyNames."");   // 语法错误: Unexpected string
console.log(unusualPropertyNames[""]);  // An empty string
console.log(unusualPropertyNames.!);    // 语法错误: Unexpected token !
console.log(unusualPropertyNames["!"]); // Bang!

字符串字面量 (String literals)

字符串字面量是由双引号(")对或单引号(’)括起来的零个或多个字符。字符串被限定在同种引号之间;也即,必须是成对单引号或成对双引号。下面的例子都是字符串字面值:

"foo"
'bar'
"1234"
"one line \n another line"
"John's cat"

运算符

运算符就是将一个数或多个数进行运算,并将结果返回 运算符分为:算术运算符 逻辑运算符 一元运算符 比较运算符 算术运算符:+ - * / % ++ –

逻辑及运算符:与&& 或|| 非!

&&必须俩个条件都满足才能成立
||满足其中一条条件即可
!直接否定

一元运算符:a++ ++a

比较运算符:> 大于运算符 < 小于运算符 <= 小于或等于运算符 >= 大于或等于运算符 ==相等运算符 === 严格相等运算符 ! != 不相等运算符

一个等于号是赋值 俩个等于号是判断值是否相等 三个等于号是判断值跟数据类型是否相等、 加号左右俩测如果有字符串就会进行拼串,若无字符串则转为number计算 加减乘除取模都转为number计算
条件运算符也叫三元运算符

赋值运算符

*= += -= = /= %=

if语句

if(条件){执行代码}
else{执行代码1}

if执行流程

只要满足第一个判断条件就执行对应的语句,下面无论是否满足都不执行
不满足第一个条件,接着判断下一个条件,如果下一个条件满足就停止判断,输出对应语句,如果下一个语句还不满足,就继续往下判断
所以如果要写判断条件把最大范围写在上面,小范围写在后面,或者分段写判断条件

循环语句

for循环
for循环的关键字	()里面是条件		var i=0;初始值		i<=10;循环条件		i++;自增
for循环句式/语法
for(1初始值;循环条件;循环方式){
执行语句
}

1 初始化变量可以放到小括号里面也可以放到循环外面
2 判断是否符合循环条件,如果是true那就继续往下执行 如果是false,直接不执行
3 执行循环体中的语句 4 执行循环方式(++/–等
5 判断是否符合循环条件,如果是true那就继续往下执行 如果是false,直接不执行 初始值只能执行一次

while循环

1 初始化变量:是在循环外面初始化
2 判断是否符合循环条件 如果返回值是true满足条件则执行代码
如果返回值是false不满足条件则跳出循环
3 执行的代码块
4 循环方式,如果放在循环之前,会先按照循环方式增加或减少,然后再输出,如果放到输出后会执行输出。进行下一个循环之前,按照循环方式增加或减少

while(true){}

当while后面的条件一直是true的时候就是一个死循环,为了避免问题,有需要情况下可以在循环体内进行判断,达到某个条件然后break(跳出循环)。
break跟continue可以处理死循环中执行停止或跳过

		do..while循环
     		 var  a=0;//声明变量
			do{//执行块
				alert(a);//输出
				a++;//循环方式
			}
			while(a<0)//循环条件                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

for,while和do while的区别

For的初始值,条件,循环方式可以写到小括号里面,其他不可以使用初始值变量

while和do while初始值都是写在外面的 条件写在小括号内,循环方式卸载循环体内。 do
while是先执行后判断,无论条件是否为true他都会执行一遍
for和while是先判断后执行,当条件为true时才会执行循环体中的代码,条件是false则不执行

switch条件分支语句

parseInt取整,将字符串转换成整型,返回由字符串转换得到的整数。 parseInt()取整是JavaScript当中的内置方法
相同点:俩者取整后都是number类型 不同点:输入数字字符串取整后得数字类型的值 输入得汉字类型的字符串取整后得NaN

parseFloat()去浮点 parseFloat()把小数点后面的0去掉

case是switch中匹配的每个案例,必须用break中断每一个语句(除了最后一个),如果不写break只要符合条件包括后面的全部显示,写break只输出符合条件的匹配项
default默认 在switch中放到最后一项,作为最后默认的选项

switch语句和if语句的区别

if语句可以对一些一切未知的条件进行判断 switch语句只可以对有一些已知条件的事情进行判断

强制类型转换

String()将非字符串类型转换为字符串
Number()将非数字类型的转换为数字类型
Boolean()将非布尔类型的转换为布尔类型

隐式类型转换

+-*/%
parseInt()将字符串类型的转换为整数数字

跳转语句

break是跳出循环 break默认终止的是离他最近的循环 如果俩个循环嵌套,想终止外侧循环给外侧循环起名字,在外侧循环上直接写名字
名字:for(){} 然后break 名字; 实现内外循环同时终止

基本数据类型都是一个具体的值 值与值之间没有任何联系
对象则不同,除了基本类型都是对象

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js基础篇 的相关文章

  • Canvas drawImage 内联 svg 在 Firefox 上不起作用

    这是一个例子 它采用 svg 并将其转换为画布 http jsfiddle net Na6X5 944 http jsfiddle net Na6X5 944 var can document getElementById canvas1
  • Firefox 中的 jQuery 表单提交

    请帮我解决一个问题 我有这个代码 用于通过锚点提交表单
  • 将浮点值转换为灰度十六进制颜色值

    这个问题又快又简单 我有一个二维浮点数组 0 0000000 到 1 0000000 我想将这些数字转换为颜色值 000000 到 ffffff 请注意 我所说的只是灰度值 0 黑色 0 5 中灰色 1 白色 有谁知道如何用 javascr
  • jQuery 插件与小部件

    几个月前 我开始使用 jQuery 插件进行一些实验 我在互联网上找到了一些教程 然后开始整理一些东西 几天前 我需要构建自己的 插件 并回到我的旧项目 当我试图在互联网上找到更多信息时 我偶然发现了这些称为小部件的新 东西 据我了解 我应
  • DOM 元素宽度可以是非整数吗?

    我有一个页面 其 div 元素由 JavaScript 对齐 JavaScript 只是检查一组 div 元素来查找最大值偏移宽度 然后设置所有 div 元素 width成为最大偏移宽度 它在大多数浏览器和区域设置中都能完美运行 但在 Ma
  • 如何在 React 组件中使用 CDN

    我正在尝试使用基于 D3 构建的库 称为 Greuler 来动态渲染图形 它的 npm 包似乎已损坏 当我改用 Greuler CDN 时 index html 中的测试图终于起作用了 但是 我正在开发一个 React 应用程序 并且我希望
  • jQuery 显示隐藏左侧滑动面板

    我希望在单击按钮时面板从浏览器的左边缘滑动 并在单击同一按钮 切换 时隐藏面板 Html div class panel div a href class slider arrow show raquo a CSS panel width
  • 无法获取子 DOM 元素

    注 由于问题有点复杂 为了可读性对代码进行了抽象 We ve a
  • React Native 中循环 Json 并显示

    How do I go about looping the result i retrieved from Json render function console log this state list contents
  • 在网站的一次导航中仅显示一次弹出窗口

    我有一个使用 Laravel 创建的网站 我希望用户第一次访问我的网站时能够看到弹出窗口 我的意思是第一次 用户访问我网站上的任何页面 这是第一次 访问网站上的一些链接页面 现在 这些页面访问不是第一次 在同一选项卡中打开 facebook
  • 如何在 blob 类型中使用 UTF-8?

    我必须通过 csv 文件导出表 csv 文件数据来自服务器 按 Blob 类型 Blob size 2067 type text csv async exportDocumentsByCsv this commonStore setLoad
  • IE7 真的不支持indexOf javascript 吗? [复制]

    这个问题在这里已经有答案了 可能的重复 数组上的 indexOf 函数在使用 JavaScript 的 IE7 8 中不起作用 https stackoverflow com questions 11544983 indexof funct
  • 在 Photoshop 中使用 javascript 修改文本项的内容

    我知道如何使用这样的代码在 Photoshop 中设置文本项的内容 var al doc activeLayer if al kind LayerKind TEXT get the textItem var ti al textItem c
  • 在 jQuery 中获取最接近元素的形式

    我编写了这个 js jquery 脚本来检查表单中的所有复选框 它工作得很好 但是这会检查页面上的所有复选框 无论它们是什么表单包装器 这是函数 function toggleCheck state var checkboxes jQuer
  • ajaxStart 和 ajaxStop 与 fetch API 等效

    我正在尝试将 API 调用从使用 jQuery ajax 迁移到使用 Fetch API 我使用 jQuery ajaxStart 和 ajaxStop 在服务器调用期间显示加载旋转器 我正在运行多个并行服务器请求 我希望旋转器在第一个请求
  • 当来自 Mozilla Firefox 和 MS Edge 上的剪贴板时 Alpha 会变成黑色

    我正在使用代码从这里 https stackoverflow com a 15369753 5875416将剪贴板中的图像粘贴到页面上 它在所有浏览器 Chrome Firefox Edge 和 Opera 中都能正常工作 问题是 当图像是
  • 是否可以对 Flexbox 插入、删除和项目位置进行动画处理?

    这个问题最初是在 2012 年提出的 https stackoverflow com questions 11106876 is it possible to animate flexbox inserts removes但是提供的答案并未
  • 通过 Javascript 填充 ReactJS HTML 表单

    我正在开发一个应用程序 在打开第 3 方网站后 我可以在浏览器上下文中运行我自己的 Javascript 作为一个基于reactjs构建并具有登录表单的示例网站 您可以参考此链接 我正在尝试在reactjs生成的表单中填写用户名和密码 但是
  • 如何从 fetch API 返回 json 响应

    我有一个像这样的函数 check auth fetch Urls check auth credentials include method GET then response gt if response ok return respon
  • localStorage 获取 NULL?

    我不知道为什么 因为我之前已经这样做过并且工作正常 我认为这可能是因为浏览器问题 错误 localStorage setItem foo bar alert localStorage getItem foo 我使用的是 Firefox 3

随机推荐

  • antd Form表单给标题头添加图标或一些其他样式

    给表单标题旁添加一个Icon图标并设置一个提示信息 如果就一个icon图标和提示信息可以直接使用Form Item中的tooltip属性 tooltip title Tooltip with customize icon icon
  • 奇迹去掉400级限制的详细修改

    奇迹去掉400级限制的详细修改 我是艾西 今天分享的是奇迹mu如何去掉400级等级限制修改 对于懂技术的小伙伴可以作为参考 更多关于奇迹技术问题可以爱特我 下面我们直接进行操作 直接在scf common ini文件里设置 Common S
  • Python批量管理主机

    18 1 paramiko paramiko模块是基于Python实现的SSH远程安全连接 用于SSH远程执行命令 文件传输等功能 默认Python没有 需要手动安装 pip install paramiko 如安装失败 可以尝试yum安装
  • ReactNative 学习笔记Component 和createClass区别

    Component 更改默认state 中的成员变量 需要调用构造器 getInitialState函数是不会被调用的 pre class javascript class SearchPage extends Component cons
  • js正则匹配不能为空

  • termux怎么生成木马_Termux入侵安卓指南

    apt update 更新源 apt upgrade 升级软件包 pkg install vim curl wget git python nmap 安装基本工具 PS 如果有弹出选项 输入y然后回车即可 安装MSF 进入termux 逐步
  • 【华为OD机试真题2023B卷 JAVA&JS】统计射击比赛成绩

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 统计射击比赛成绩 时间限制 1秒 内存限制 65536K 语言限制 不限 题目描述 给定一个射击比赛成绩单 包含多个选手若干次射击的成绩分数 请对每个选手按其最高3个分数之和进行降序排
  • 运算放大器使用的六个经验

    文章目录 1 注意输入电压是否超限 2 不要在运放输出直接并接电容 3 不要在放大电路反馈回路并接电容 4 注意运放的输出摆幅 5 注意反馈回路的Layout 6 要重视电源滤波 2016 2017 小威 家 豫ICP备17018141号
  • Java web期末

    一 简答题 1 Servlet的体系结构 1 Servlet接口 规定了必须由Servlet类实现并且由Servlet引擎识别和管理的方法集 2 GenericServlet抽象类 提供了除service 方法之外其他有关Servlet生命
  • cpu的MMU

    MMU 内存管理单元 用于完成虚拟内存和物理内存的映射 位于CPU内部 我们知道 程序文件一般放在硬盘上 当把程序运行起来时 程序被放入内存中 通过内存放入cache 通过cache进入cpu 下图中预取器就是负责从cache取出指令 然后
  • H5 移动端 时间选择器

    本选择器 自己填充内容 li的文本 只是做了一个大概的样式 其它的有需要者自己去改
  • Ubuntu22.04密码忘记怎么办 Ubuntu重置root密码方法

    在Ubuntu 22 04 或其他更高版本上不小心忘记root或其他账户的密码怎么办 首先uname r查看当前系统正在使用的内核版本 记下来 前提 是你的本地电脑 有物理访问权限 其他如远程登录的不适用这套改密方法 通过以下步骤 无需输入
  • response.text和 response.content的区别:

    1 response content这个是直接从网络上面抓取的数据 没有经过任何解码 所以是一个 bytes类型 其实在硬盘上和在网络上传输的字符串都是 bytes类型 2 response text 这个是 requests 将 resp
  • 【数据结构】JavaScript栈实现

    栈是一种常见的数据结构 常用于app页面堆栈 括号匹配校验 中缀表达式转换 图的深度优先遍历等场景 本文参考java jdk源码 在JavaScript中实现这种数据结构 一 栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表 允许插入和
  • 浅谈招标投标活动中质疑及投诉问题

    http www docin com p 608989637 html
  • 【研一小白的白话理解】pytorch-CycleGAN-and-pix2pix

    pytorch CycleGAN and pix2pix 博客简述 项目整体理解 GAN Cycle GAN CGAN DCGAN Pix2pix Pix2pix简介 Auto encoder U net Pix2pix结构 项目结构 文件
  • 贪心—To Fill or Not to fill

    0x00 题目地址 To Fill or Not to Fill 牛客网 nowcoder com 0x01 分析 符合最优子结构 无后效性 重复子问题三个条件 因此可以使用贪心求解 先按照距离排序 将加油站排成一条线 算法每一步的思路 1
  • vue全局组件注册、局部组件注册、全局方法注册

    一 全局组件注册有两种方法 1 在main js文件中引入组件 import UserData from components UserData vue vue component UserData UserData 就可以直接在vue文件
  • STM32F103学习笔记(六

    实验六 七 独立和窗口看门狗实验 看门狗 单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环 看门狗电路就是为了避免这种情况的发生 看门狗的作用就是在一定时间内 通过定时计数器实现 没有接收喂狗信号 表示 MCU 已经挂了 便实现处
  • js基础篇

    JavaScript语法 字面量 也叫直接量 就是程序中直接使用的 是变量后面的值 变量就是声明一个未知可变的量 变量声明符合unicode编码所有变量符合utf 8的编码都可以 标识符命名标准 1 必须是字母 数字 开头 2 以驼峰命名规