JavaScript语法

* number 数字,不论是整数还是小数,数据类型都是number
* string 字符串,
* boolean 布尔值,只有两个,true和false. 只有python中是首字母大写
* object 对象,这个比较特殊.你可以理解为所有被new出来的东西都是对象
* undefined,这个表示未定义.所有没有被定义过的东西默认都是该类型

* 数字相关

var a, b = 20;console.log(a)  // undefinedconsole.log(b)  // 20// 类型查看     typeof()
console.log(typeof (a))var c = '123';// js在做 + 运算时,会检测数据类型,如果其中有字符串,则是拼接
// ()中全是数字才是加法运算
console.log(c + 10)   // 12310// 转换数字     parseInt()
d = parseInt(c)console.log(d + 10)   // 133

* 字符串相关
s.split(separator):字符串切割,使用 separator 分隔符进行切割,返回一个由分割后的子字符串组成的数组。

s.substr(start, len):从字符串的 start 索引位置开始,切割 len 个字符,返回切割后的子字符串。

s.substring(start, end):从字符串的 start 索引位置开始切割,直到 end 索引位置结束(不包含 end),返回切割后的子字符串。

s.length:获取字符串的长度。

s.charAt(i):获取字符串中索引位置为 i 的字符。

s.indexOf('xxx'):返回子字符串 'xxx' 在 s 中第一次出现的位置索引,如果没有找到则返回 -1。

s.includes('x××'):判断子字符串 'x××' 是否在 s 中出现,返回布尔值。

s.toUpperCase():将字符串转换为大写字母形式。

s.startsWith('xxx'):判断字符串是否以子字符串 'xxx' 开头,返回布尔值。

var d = 123;// 转换字符串    toString()
e = d.toString()console.log(e + 10)// 转字符串的另一种写法
var f = 10;
var g = 20;
h = f + '' + g
console.log(h)  // 1020

* i++
* 关于 ++ 和 = 的问题,
* 在重新赋值时,变量在前,直接赋值变量的值。 ++在前 先+再赋值

var i = 10;
i++
console.log(i)  // 11var i7 = 10;
var e7 = i7++;
console.log(i7) // 11
console.log(e7) // 10var i8 = 10;
var e8 = ++i8;
console.log(i8) // 11
console.log(e8) // 11var i9 = 10;
var i9 = i9++;
console.log(i9) // 10var i5 = 10;
var i5 = ++i5;
console.log(i5) // 11

* bool相关

var bo = 3 < 2;console.log(bo)  // false// JavaScript 引擎会将 undefined 转换为 NaN
// 任何数字与 NaN 进行比较都会返回 false
var j = 2 < undefined;
console.log(j)// 无论正数负数与字符串比较,统一返回false
var q = -8 > '李';
console.log(q)

* 根据 JavaScript 的类型转换规则,空字符串 '' 在被转换为数字时会变成 0
* 比较操作符 === 是严格相等,它会比较两个值的类型和值是否完全相等
* ==,<,>,会在比较之前尝试进行类型转换,只比较值是否相等

// 负数<''   true    负数>'' false
// 正数<''   false   正数>'' true
// 0 > ''   false   0 < '' false
// 0 == ''  true
// 0 === '' false
var o = 0 === '';
console.log(o)

* 运算符相关
* && 相当于python中的and
* &&(逻辑与)操作符的优先级高于 ||(逻辑或)操作符
* || 相当于python中的or
* || 运算符在计算时会尽可能早地确定整个表达式的值,如果其中一个操作数为真,则整个表达式就为真,不会再继续计算后面的操作数。

// &&操作:全部为真,结果为真,一个为假,结果为假
var x = (3 > 2) && (4 > 3) && (5 > 18);
console.log(x)  // false// ||操作:一个为真则立即返回
var y = (5 > 18) || (3 > 2) && (4 > 3);
console.log(y)  // truevar l = 0 === '' > 'Fox' && 8 + (4 - 7) || -999 < undefined && !(0 === '' > 'Fox') || 'QQ' || !!'true';
console.log('>>>>', l)  // >>>> QQ

* JavaScript中常见运算符的优先级排列(优先级从高到低):
Member Access(成员访问):. 和 []
Function Call(函数调用):() 和 new
Logical NOT(逻辑非):!
Bitwise NOT(位非):~
Unary Plus(一元加)和 Unary Negation(一元减):+ 和 -
Multiplication(乘法)、Division(除法)和 Remainder(取余):*、/ 和 %
Addition(加法)和 Subtraction(减法):+ 和 -
Bitwise Shift(位移):<<、>>、>>>
Relational(关系):<、>、<=、>=、instanceof、in
Equality(相等性):==、!=、===、!==
Bitwise AND(位与):&
Bitwise XOR(位异或):^
Bitwise OR(位或):|
Logical AND(逻辑与):&&
Logical OR(逻辑或):||
Conditional(三元条件):? :
Assignment(赋值):=, +=, -=, *=, /=, %= 等
Comma(逗号):,(用于分隔表达式)

* 三元表达式    条件?值1:值2

var m = 1 > 2 ? 'QQ' : 'WW'
console.log(m)  // WW// 嵌套
var c1 = 10;
var c2 = 20;
var c3 = 30;
var c4 = c1 > c2 ? c1 + c2 : c2 > c3 ? c2 - c3 : c3 * c1;
console.log(c4);    // c3 * c1 --> 300var o1 = 10;
var o2 = 20;
var o3 = o1 > o2 ? o1 : o2 ? o1 : o2
console.log(o3) // 10

* 二进制和十进制转换

var b1 = (5).toString(2)  // string类型 101var i1 = parseInt('111', 2)   // number类型 7

* | 位或,两个对应位中至少有一个为 1,则该位结果为1,否则为0
* & 位与,两个对应位都为 1,则该位结果为 1,否则为 0


const Read = 0b0001;
const Write = 0b0010;
const Execute = 0b0100;
const Delete = 0b1000;let userPermissions = Read | Write; // 用户具有读取和写入权限
let requestedPermissions = Read | Execute; // 请求读取和执行权限function checkPermissions(user, requested) {// 如果user拥有对应权限,// 那么user & requested 计算之后的值为该权限requested的值return (user & requested) === requested;
}console.log(checkPermissions(userPermissions, requestedPermissions)); // 输出 false,用户没有执行权限

* if语句

var f1 = 50;
if (f1 < 20) {console.log('f1小于20');
} else if (f1 < 30) {console.log('f1小于30');
} else if (f1 < 40) {console.log('f1小于40');
} else if (f1 < 50) {console.log('f1小于50');
} else if (f1 <= 60) {console.log('f1小于60');
} else {console.log('大于60');
}// 单行if语句
var f2 = 100;
if (f2 < 5) console.log('f2 大于 5');
if (f2 < 20) console.log('f2小于20'); else console.log('f2大于20');// 如果使用逗号运算符分隔多个表达式,实际上只会取最后一个表达式f4 > 15的值作为条件判断的结果
var f3 = 10, f4 = 20;
if (f3 > f4, 30 > f3, f4 > 15) {console.log('条件成立');
}

* switch语句
* break 防止case穿透


var month = 6;
var season = '';switch (month) {case 1:case 2:case 12:season = 'Winter';break;case 3:case 4:case 5:season = 'Spring';break;case 6:case 7:case 8:season = 'Summer';break;case 9:case 10:case 11:season = 'Autumn';break;default:season = 'Invalid month';
}console.log('The season for month ' + month + ' is ' + season);

* 循环语句 while  do.while  for  forEach


var num = 1;
while (num > 0 && num < 10) {console.log('num:', num);num += Math.random() > 0.5 ? 1 : -1;
}var num2 = 0;
do {console.log('do..while执行');
} while (num2);for (var i2 = 1, j2 = 10; i2 < j2; i2++, j2 -= 2) {console.log('i2:', i2, 'j2:', j2);
}var array1 = [10, 20, 30];
for (var item in array1) {console.log(array1[item])
}var array2 = [10, 20, 30];
array2.forEach(function (item) {console.log(item)
})

* 数组


var arr1 = [1, 2, 3];var arr2 = new Array(1, 2, 3);var arr3 = new Array(3);  // [ <3 empty items> ]    --> [ , , ]console.log(arr3[0])    // undefinedarr3[2] = '下雨天'   // [ <2 empty items>, '下雨天' ]console.log(arr3)arr3[4] = '阴天'console.log(arr3);  // [ <2 empty items>, '下雨天', <1 empty item>, '阴天' ]for (var i4 = 0; i4 < arr3.length; i4++) {console.log(arr3[i4])
}   // undefined  undefined  下雨天  undefined  阴天

* 字典


// 创建一个字典对象
var dictionary = {"apple": "果实,苹果","banana": "一种水果","car": "汽车,车辆"
};// 访问字典中的值
console.log(dictionary["apple"]);  // 输出:"果实,苹果"
console.log(dictionary["banana"]); // 输出:"一种水果"
console.log(dictionary["car"]);    // 输出:"汽车,车辆"// 添加新的键值对
dictionary["dog"] = "狗";// 删除键值对
delete dictionary["car"];// 遍历字典中的键值对
for (var key in dictionary) {console.log(key + ": " + dictionary[key]);
}

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

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

相关文章

代码随想录刷题day27|组合总和II组合总和II分割回文串

文章目录 day27学习内容一、组合总和-所选数字可重复1.1、代码-正确写法1.1.1、为什么递归取的是i而不是i1呢&#xff1f; 二、组合总和II-所选数字不可重复2.1、和39题有什么不同2.2、思路2.2.1、初始化2.2.2、主要步骤2.2.3、回溯函数 backTracking 2.3、正确写法12.3.1、为什…

【 如何使用路由建立多视图单页应用】的详细讲解

使用路由建立多视图单页应用 1. 多视图1.1 引入依赖库1.2 创建自定义组件 2. React&#xff08;使用React Router&#xff09;3. Angular&#xff08;使用Angular Router&#xff09;4. Vue&#xff08;使用Vue Router&#xff09; 1. 多视图 构建多视图的单页应用程序&#x…

传值、传址、空间释放详细图解

目录 前言 一.进程 1.1 进程的映射 1.2 进程的虚拟空间 二.函数传参 2.1 函数传参 2.2 函数传值 2.2.1 函数传值案例1 2.2.2 函数传值案例2 2.2.3 返回值为常量 2.3 函数传送地址 2.3 字符串使用 前言 详细介绍函数传值和传地址区别&#xff1a;进行数据操作的区别&#xff0c…

c++算法学习笔记 (11) 离散化

1.前置知识&#xff1a; unique是 c标准模板库STL中十分实用的函数之一&#xff0c;使用此函数需要#include <algorithm>头文件 该函数的作用是“去除”容器或者数组中相邻元素的重复出现的元素。 (1) 这里的去除并非真正意义的erase&#xff0c;而是将重复的元素放到容…

VMware workstation pro 16 虚拟机的安装

VMware workstation pro 16 虚拟机的安装 VMware 16下载VMware 16安装VMware 16许可 VMware 16下载 下载地址&#xff1a; VMware workstation pro 16 官网下载地址 VMware 16安装 安装向导&#xff0c;点击下一步勾选我同意许可协议中的条款&#xff0c;点击下一步 更改安…

被奔驰看上的“人”

上周五&#xff0c;人形机器人公司、NASA 合作伙伴 Apptronik 宣布已与梅赛德斯奔驰&#xff08;以下简称奔驰&#xff09;达成一项商业协议&#xff0c;试点将身高 1.7 米、体重 140 多斤的双足机器人 Apollo 用于制造业。奔驰也成为继宝马、蔚来汽车之后最新尝试人形机器人的…

nodejs实现链接shp的属性信息(替换字段或者追加字段)

写在前面 偶尔听到同事说一个数据处理重复性的流程太多&#xff0c;就了解了下&#xff0c;原来是1份shp数据对应着一个xls属性文件&#xff0c;需要把xls文件里的一部分属性更新到shp的相关字段中&#xff0c;当然这种操作是可以用ArcGIS或者QGIS实现&#xff0c;但是当数据特…

综合交易模型----可转债三低策略实盘qmt版,提供源代码

链接 综合交易模型----可转债三低策略实盘qmt版&#xff0c;提供源代码 (qq.com) 可转债3低策略是指选择正股市值低、转债余额低、溢价率低的可转债进行投资的策略。 市值低&#xff1a;指的是可转债对应的正股市场价值较小&#xff0c;这通常意味着需要较少的资金就可以对股价…

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 文章目录 jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 Sentinel概述基本介绍 Sentinel安装下载地址: http…

聊聊AI时代学习这件事本身应该发生什么样的变化

随着 AI 大模型 的爆发&#xff0c;我们身处这个时代&#xff0c;应该怎么样去学习去了解这些前言的技术&#xff1f;可能很多人会说我英文不好&#xff0c;我算法不行&#xff0c;无法深入去了解 AI 大模型相关的知识吧&#xff1f; 没关系&#xff0c;其实博主也跟大家一样&…

注册登录Vue3+ElementPlus代码

1、app.vue <script setup>import LoginVue from /views/Login.vue </script><template><LoginVue/> </template> 2、Login.vue <script setup> import { User, Lock } from "element-plus/icons-vue"; import { ElMessage } …

[小程序开发] 外部样式类

一、外部样式类 在使用组件时&#xff0c;组件使用者可以给组件传入CSS类名&#xff0c;通过传入的类名修改组件的样式。 如果需要使用外部样式类修改组件的样式&#xff0c;在Component中需要用extemalClasses定义若干个外部样式类。 二、使用步骤 1、在Component中用externa…

C++面试100问!(一)

STL中MAP数据存放形式&#xff1f; 红黑树。unordered map底层结构是哈希表。 STL有什么基本组成&#xff1f; 容器、迭代器、仿函数、算法、分配器、配接器&#xff0c; 他们之间的关系&#xff1a;分配器给容器分配存储空间&#xff0c;算法通过迭代器获取容器中的内容&…

实在智能Agent——RPA终极进化方向

RPA技术备受瞩目&#xff0c;它通过“机器人”自动化了人力执行的重复性、低复杂度任务&#xff0c;解放了员工并降低了企业成本。RPA机器人全天候运行&#xff0c;避免人为错误&#xff0c;高效处理任务&#xff0c;成为处理事务、操作数据、回应查询的理想选择。在管理后台&a…

第四百一十回

文章目录 1. 概念介绍2. 方法与细节2.1 获取方法2.2 使用细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容&#xff0c;本章回中将介绍如何获取时间戳.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

实体店运营方案大全:从选址到日常管理的全面指导

想开实体店或正在创业的朋友们&#xff0c;大家好&#xff01;今天&#xff0c;我作为一个鲜奶吧5年的创业者&#xff0c;为大家分享一份实体店运营方案大全&#xff0c;涵盖从选址到日常管理的各个方面。我在实体店方面有一些心得体会&#xff0c;今天就来和大家聊聊&#xff…

【面试自测】Java并发

Synchronized 用 过 吗 &#xff0c; 其 原 理 是 什 么 &#xff1f;获 取 对 象 的 锁 &#xff0c; 这 个 “ 锁 ” 到 底 是 什 么 &#xff1f; 如 何 确 定 对 象 的 锁 &#xff1f;什 么 是 可 重 入 性 &#xff0c; 为 什 么 说 Synchronized 是 可 重 入 锁 &#x…

【软考】系统集成项目管理工程师(十九)收尾管理【1分】

一、项目收尾的内容 二、总结 三、软件后续工作 练一练 【例1-17上】&#xff08;B&#xff09;不属于项目验收的内容。 A.验收测试 B.系统维护工作 C.项目终验 D.系统试运行 【例2-17上】信息系统集成项目完成验收后要进行一个综合性的项目后评估,评估的内容一般包括&#…

uView LoadingIcon 加载动画

此组件为一个小动画&#xff0c;目前用在uView的loadMore加载更多等组件的正在加载状态场景。 #平台差异说明 App&#xff08;vue&#xff09;App&#xff08;nvue&#xff09;H5小程序√√√√ #基本使用 通过mode设定动画的类型&#xff0c;circle为圆圈的形状&#xff0…

探索Spring中的属性注入:@Value注解解析与应用

探索Spring中的属性注入&#xff1a;Value注解解析与应用 探索Spring中的属性注入&#xff1a;Value注解解析与应用摘要引言正文作用代码准备示例注入字符串注入属性注入Bean及其属性 其他属性注入优先级问题对Value属性注入的扩展Spring Boot对Value类型转换的扩展 代码案例演…