(一)语法 基础概念

news/2024/2/21 3:29:30

文章目录

  • 一、JavaScript 变量的命名规则
  • 二、Const \ var \ let 定义变量的区别
  • 三、循环控制语句
  • 四、分支控制语句
  • 五、判断运算符

一、JavaScript 变量的命名规则

变量命名必须以字母、下划线”_”或者”$”为开头。其他字符可以是字母、下划线、美元符号或数字。

  • 变量名中不允许使用空格和其他标点符号,首个字不能为数字。
  • 变量名长度不能超过255个字符。
  • 变量名称对大小写敏感(y 和 Y 是不同的变量),JavaScript 语句和变量都对大小写敏感。
  • 变量名必须放在同一行中。
  • 不能使用脚本语言中保留的关键字、保留字、true、false 和 null 作为标识符。

二、Const \ var \ let 定义变量的区别

const定义变量不可以修改,而且必须初始化.

  • var定义的变量可以修改,如果不初始化会输出undefined,不会报错.
  • let是块级作用域,函数内部使用let定义后,对函数外部无影响。

三、循环控制语句

For

  • For-in
    可以任意顺序遍历数组或者对象的可枚举属性
  • For-of
    不能遍历对象,只能遍历带有iterator接口的,例如Set,Map,String,Array;
    可以遍历数组,输出的是数组元素值(value)
// 对象
const object = { name: 'lx', age: 23 }
// for ... in
for (const key in object) {console.log(key) // 输出 name,ageconsole.log(object[key]) // 输出 lx,23
}
// for ... of
for (const key of object) {console.log(key) // 报错 Uncaught TypeError: object is not iterable
}
// 数组对象
const list = [{ name: 'lx' }, { age: 23 }]
for (const val of list) {console.log(val) // 输出{ name: 'lx' }, { age: 23 }for (const key in val) {console.log(val[key]) // 输出 lx,23}
}
  • While
    先判断再执行
  • do-while
    先执行再判断

四、分支控制语句

  • If else
    语句更加灵活,通常用于范围判断(大于、等于某个范围)

  • switch
    通常处理case为比较确定值的情况

  • 对比:
    switch语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else语句有几种条件,就得判断多少次;
    当分支比较少,if…else语句的执行效率比switch语句更高;
    当分支比较多时,switch语句的执行效率较高,而结构更加清晰。

五、判断运算符

=== (绝对等)
不会转换数据类型,直接进行比较

  • == (模糊等)
    先进行类型转换,然后再进行比较

区别:
在比较类型相同的数据时,== 与 === 之间没有任何区别,完全一样
在比较不同类型的数据时,== 相等运算符会将数据先进行类型转换,然后再进行比较。=== 严格等不会转换数据类型,直接进行比较。
在比较时,结果为真即为 true ,结果为假即为 false。

类型转换规则:

  1. 如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。
  2. 如果等号两边出现了null或undefined,null和undefined除了和自己相等,就彼此相等
  3. NaN无论在什么时候都不会等于自己本身,判断是不NaN 只能使用isNaN()。

: ==判断的特殊情况如下,一个值为undefinned时,仍然能通过 == null的判断。

if ( obj.hi == null ) {
}if ( obj.hi == undefined ) {
}
// 上面两种判断算是以下代码的简写
if ( obj.hi === null || obj.hi === undefined ) {
}

ES6新的方法Object.is 来比较两个值严格相等,它与严格比较运算符“===”基本一致,不同之处只有两个:

  1. +0不等于-0;
  2. NaN等于自身;
    代码实现:
function is(x, y){ if (x === y) {// 运行到1/x === 1/y的时候x和y都为0,但是1/+0 = +Infinity, 1/-0 = -Infinity, 是不一样的return x!==0 || y!==0|| 1/x===1/y;  } else {// NaN === NaN 是false,这是不对的// 这里做一个拦截,x!==x,那么一定是 NaN, y同理两个都是NaN的时候返回true return x!==x && y!==y;  }
}

http://www.ppmy.cn/news/66332.html

相关文章

SubMain CodeIt.Right 2022.2 Crack

CodeIt.Right,从源头上提高产品质量,在编写代码时获取有关问题的实时反馈,支持最佳实践和合规性,自动执行代码审查,轻松避免与您的群组无关的通知,一目了然地了解代码库的运行状况 自动执行代码审查 使用自…

5月10号软件资讯更新合集....

elementary OS 图像注释工具 Annotator 1.2 发布 Annotator 是一个免费开源图像注释工具,最初是为 elementary OS 设计,但也可用于其他 Linux。近日该工具发布了 1.2 版本,新版本增加了对全屏、当前窗口和选择区域进行截图等功能。 新版本还…

OpenCV教程——Mat对象

1.Mat对象和IplIamge对象 Mat对象是OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分为两个部分:头部和数据部分。IplIamge是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构&#…

[Data structure]双链表 | 一文带你了解线性数据结构之一的双链表

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:数据结构 双链表 1、简介2、常见操作3、时间复杂度4、代码实现思路总览5、Node6、DoubleLinkedList6.1、添加节点…

《设计模式》访问者模式

《设计模式》访问者模式 定义: 访问者模式用于封装一些作用于某种数据结构中的各元素的操作,将数据结构和数据操作分离,它可以在不改变这个数据结构的前提下定义作用于这些元素的新操作。属于行为型模式。 访问模式的角色组成: …

java程序员容易被人误解?我来聊聊常见的三种情况

先说一下个人情况吧。21年来到深圳,现在马上工作满两年。我说程序员是一个容易被人误解的职业呢,可能在大部分人的印象里,程序员就是一个呆板、穿着格子衫、戴着厚厚的眼镜片、比较呆滞的一群人。其实这个印象可能是符合上个年代吧——程序员…

不同应用场景瑞芯微RK3568主板方案定制

随着物联网和智能设备的迅猛发展,瑞芯微RK3568主板方案作为一种高性能的系统System-on-a-chip(SoC),已经成为嵌入式系统、智能家居设备和工业自动化设备等应用场景的首选方案。定制瑞芯微RK3568主板方案可以满足不同应用场景的需求…

Playground AI:免费绘画图像创作工具

【产品介绍】 Playground AI是一个免费的在线 AI绘画 图像创作工具。你可以用它来创作艺术作品、社交媒体帖子、演示文稿、海报、视频、logo 等等。 Playground AI 的核心技术是基于深度学习的图像生成模型,它可以根据你的输入文字或图片,自动合成出高质…

MD-MTSP:孔雀优化算法POA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

一、多仓库多旅行商问题 多旅行商问题(Multiple Traveling Salesman Problem, MTSP)是著名的旅行商问题(Traveling Salesman Problem, TSP)的延伸,多旅行商问题定义为:给定一个𝑛座城市的城市集…

安卓屏幕适配那些事情面试,一篇全部搞定

安卓屏幕适配那些事情面试,一篇全部搞定 零.弄懂px/ dp /dpi /屏幕分辨率/尺寸,屏幕适配的原理一.autolayout二.autosize今日头条三.smallestWidth 限定符screenMatch 零.弄懂px/ dp /dpi /屏幕分辨率/尺寸,屏幕适配的原理 https://blog.csd…

社交媒体中的“点赞”“喜欢”是如何存储在数据库中的?

你有没有想过 Instagram、Twitter、Facebook 或任何社交媒体平台如何跟踪谁喜欢你的帖子?让我们在这篇文章中弄清楚! 1:序言 最近,我受邀在一个名为“CityJS”的活动中发言。但问题在于:我是 PHP 开发人员。我根本不懂…

修改文章的软件-有没有自动修改文章的软件

自动修改文章神器 自动修改文章神器是一种利用人工智能和自然语言处理技术,帮助用户快速修改和优化文章的工具。该软件能够检测文章的语法和拼写错误、表达不当的问题,并自动提供修改和优化建议。用户只需根据软件的提示进行修改,就能得到高…

SpringMVC的基础知识

创建SpringMVC项目 SpringMVC项目其实和SpingBoot项目差不多,就多引入了一个SpringWeb项目而已拉 可以看这篇博客,创建的就是一个SpringMVC项目--创建项目の博客 SpringMVC是啥 Spring是啥相信大家都了解 啥是MVC呢?MVC是Model View Controller的缩写 我们分开看这三个词Model…

ASEMI代理ADUM3223ARZ-RL7原装ADI车规级ADUM3223ARZ-RL7

编辑:ll ASEMI代理ADUM3223ARZ-RL7原装ADI车规级ADUM3223ARZ-RL7 型号:ADUM3223ARZ-RL7 品牌:ADI /亚德诺 封装:SOIC-16 批号:2023 安装类型:表面贴装型 引脚数量:16 工作温度:-40C~125…

C++学习记录——이십일 AVL树

文章目录 1、了解AVL树2、模拟实现3、旋转1、左单旋2、右单旋3、双旋(先左后右)4、双旋(先右后左) 4、检查平衡5、测试性能(随机数)6、删除 1、了解AVL树 如果数据有序或接近有序,二叉搜索树将…

近40个开源的工业软件-工业4.0

不同的工业流程,需要不同的工业软件。面向研发设计环节的开源软件,今天就来介绍一下面向生产控制环节的开源软件,主要为可编程逻辑控制器(PLC)、分布式控制系统(DCS)、生产执行系统(MES&#xf…

排序算法总结

本文包含以下七种排序算法。 一、插入排序 1.插入排序(Insert Sort)的基本原理,每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象适当位置上,直到对象全部插入为止。 2.算法步骤 ①设待排序的记录存…

注入攻击(一)--------SQL注入(结合BUUCTF sqli-labs)

目录 写在前面一、暴力破解Basic-3-Brute 11.解题思路2.Burp Suite工具使用简介 二、基于GET的SQL注入Pre.使用校园网做题时可能遇到的小问题 2.1 Basic-4-SQL course 1(sql注入)1.解题思路 2.2 Basic-8-sqli-labs(sql注入的各种攻击形式&…

用正则表达式校验手机号和邮箱

用正则表达式校验手机号和邮箱 在现代互联网时代,手机号和邮箱已经成为了人们日常生活中不可或缺的联系方式。作为开发人员,校验用户输入的手机号和邮箱的合法性是非常必要的。本文将介绍如何使用正则表达式校验手机号和邮箱的格式是否正确。 校验手机…

关于一个C++项目:高并发内存池的开发过程(一)

原项目地址:高并发内存池项目: 高并发内存池项目的课堂板书代码 (gitee.com) 写在前面 本打算利用五一假期的时间将这个项目一口气开发完成,但由于本人的懈怠,这个项目最终只完成了80%。于是利用长假后的一天假期,将这个项目的框…
最新文章