js知识点

news2025/1/11 10:47:13

js有预解析阶段,变量声明提升只提升定义,不提升值

console.log(a);//undefined
var a=10;

基本数据类型

Number、String、Boolean、Undefined和Null

复杂数据类型

Object、Array、Function、RegExp、Date、Map、Set等 

使用typeof运算符可以检测值或者变量的类型

 

3e8表示300,000,000 

二进制数值0b开头 八进制数值以0开头 十六进制数值以0x开头

数字11和字符串'11'在语义上是不同的,前者表达一个数量 ,后者是一个文本

repl环境:read读取 eval执行 print打印 loop循环

字符串常用的方法

charAt()方法可以得到指定位置的字符

substring(a,b)方法得到从a开始到b结束(不包括b处)的子串

substr(a,b)方法得到从a开始的长度为b的子串,其中b可以省略,表示到字符串结尾(说明:a可以是负数,表示倒数位置)

slice(a,b)方法得到从a开始到b结束(不包括b处)的子串 它和substring(a,b)区别在:slice(a,b)中参数a可以是负数 和slice(a,b)中参数a必须小于参数b

面试题

toUpperCase()转为大写 toLowerCase()转为小写

indexOf()方法返回某个特定的字符串值在字符串值首次出现的位置,找不到则返回-1

一个没有被赋值的变量的默认值是undefined,而undefined的类型也是undefined

即:undefined又是值,又是一种类型,这种类型只有它自己一个值

用typeof检测null结果是object 数组用typeof检测结构也是object

数据类型转换

字符串变为数字:纯数字字符串能变为数字,不是纯数字的字符串将转为NaN

布尔值变为数字:true变为1,false变为0

undefined和null变为数字:undefined变为NaN,null变为0

Number('123');    //123
Number('123.4');    //123.4
Number('123年');    //NaN
Number('2e3');    //2000
Number('');    //0

Number(true);    //1
Number(false);    //0

Number(undefined);    //NaN
Number(null);    //0

parseInt函数功能将字符串转为整数

parseFloat函数功能将字符串转为浮点数 功能与parseInt()类似

parseInt('3.14');    //parseInt()将自动截掉第一个非数字字符之后的所有字符 3
parseInt('3.14是圆周率');    //所有文字都将被截掉 3
parseInt('圆周率是3.14');    //如果字符串不是以数字开头,则转为NaN
parseInt('3.99');    //3 不会四舍五入

parseFloat(true);    //NaN 说明:true隐式转换字符串true

使用String()函数

使用toString()方法将值转为字符串(常用) 

使用Boolean()函数

数字变为布尔值:0和NaN转为false,其他数字都转为true

字符串变为布尔值:空字符串变为false,其他变为true

undefined和null变为布尔值:都变为false

Boolean(123);    //true
Boolean(0);    //false
Boolean(NaN);    //false
Boolean(Infinity);    //true
Boolean(-Infinity);    //true

Boolean('');    //false
Boolean('abc');    //true
Boolean('false');    //true

Boolean(undefined);    //false
Boolean(null);    //false

表达式和操作符

隐式类型转换:如果参与数学运算的某操作数不是数字型,那么js会自动将此操作数转为数字型 

隐式转换本质是:内部调用Number()函数

true+true //2
false+2    //2
3*'2天'    //NaN

js使用了IEEE754二进制浮点数算术标准,这会使一些个别的小数运算产生丢失精度问题

解决办法:在进行小数运算时,调用数字的toFixed()方法保留指定的小数位数

幂Math.pow(a,b)和开根号Math.sqrt()

Math.pow(2,3)    //8
Math.sqrt(81)    //9
Math.sqrt(-81)    //NaN

向上取整Math.ceil()和向下取整Math.floor() 

Math.ceil(-2.4)    //-2
Math.floor(-2.4)    //-3

相等和全等

两个等号==运算符不比较值的类型,它会进行隐式转换后比较值是否相等

三个等号===运算符既要比较值的类型,又要比较值

不相等和不全等类似相等和全等

5=='5';    //true
5==='5';    //false

面试题

null和undefined用==进行比较涉及隐式强制类型转换(ES5规范中规定)

null和undefined用===进行比较时结果为false是因为类型不同:

typeof null -->object

typeof undefined -->undefined

NaN == NaN //false

NaN === NaN //false

1 == true    //true
1 === true    //false
0 == false    //true
0 === false    //false
0 == undefined    //false
0 === undefined    //false

undefined == null    //true
undefined === null     //false

 isNaN()机理:只要该变量传入Number()的执行结果是NaN,则isNaN()函数都会得到true

isNaN(undefined)    //true
isNaN('3天')    //true
isNaN(null)    //false

非运算(隐式使用Boolean()函数) 

!0    //true
!undefined    //true
!''    //true
!'mooc'    //false

逻辑运算顺序:非-->与-->或 

运算顺序:非运算-->数学运算-->关系运算-->逻辑运算

闰年判断:条件满足其一即可:能被4整除且不能被100整除/能被100整除且能被400整除

BMI判断:体重(公斤)/身高的平方(米)

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

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

相关文章

刷爆力扣之验证回文串 II

刷爆力扣之验证回文串 II HELLO,各位看官大大好,我是阿呆 🙈🙈🙈 今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜 该专栏按照不同类别标签进行刷题&#xff…

第六章 作业【数据库原理】

第六章 作业【数据库原理】前言推荐第六章 作业第6章第1题(简答题)第6章第2题(简答题)第6章第3题(设计题)第6章第4题(设计题)最后前言 2022-12-27 16:05:55 以下内容源自数据库原理…

最大连续子序列的和问题(算法)

问题描述 给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和。 蛮力法 暴力枚举 /*** 时间复杂度:O(n^3)* param arr 序列[数组]* param n 数组大小* return int */ int maxSubSum1(int arr[], int n) {int thi…

美团餐饮SaaS基于StarRocks构建商家数据中台的探索

作者:何启航,美团餐饮SaaS数据专家(文章整理自作者在 StarRocks Summit Asia 2022 的分享) 随着社会经济的发展,餐饮连锁商家越来越大,“万店时代”来临。对于美团餐饮 SaaS 来说,传统的 OLTP …

LeetCode 324 周赛

2506. 统计相似字符串对的数目 给你一个下标从 0 开始的字符串数组 words 。 如果两个字符串由相同的字符组成,则认为这两个字符串 相似 。 例如,"abca" 和 "cba" 相似,因为它们都由字符 a、b、c 组成。然而&#xff…

HQChart实战教程54-renko砖形K线图

HQChart实战教程54-renko砖形K线图 Renko砖形图效果图使用HQChart创建Renko初始化创建Renko配置参数说明ClassNameOption动态修改Renko配置参数完成demo代码Renko砖形图 Renko砖形图是仅测量价格变动的图表类型。 “ renko”一词源自日语单词“ renga”,意为“砖”。并非巧合…

day30【代码随想录】分割回文串、复原IP地址、子集

文章目录前言一、分割回文串(力扣131)二、复原IP地址(力扣93)三、子集(力扣78)总结前言 1、分割回文串 2、复原IP地址 3、子集 一、分割回文串(力扣131) 给你一个字符串 s&#xf…

前端开发:关于鉴权的使用总结

前言 前端开发过程中,关于鉴权(权限的控制)是非常重要的内容,尤其是前端和后端之间数据传递时候的请求鉴权校验。前端鉴权的本质就是控制前端视图层的显示和前端向后台所发送的请求,但是只有前端鉴权,没有后…

MyGDI+

文章目录[toc]界面设计Form窗口MenuStrip画笔其他选项界面美化整体框架设计DataStructureCPointPolylinePolygonSingletonGraphicFunctionForm事件处理成员变量事件处理总结界面设计 Form窗口 首先添加MenuStrip控件,随后在Form窗口属性界面根据个人爱好修改其图标…

请收下这份数字IC面试超强攻略!(内附大厂面试题目)

2022年马上就要结束了,想必今年有很多同学也已经感受到IC行业的门槛在不断提升,这一点尤其在面试的过程中感受明显。 前两年的时候,面试官有可能问一些比较简单的问题就能通过,今年可就没那么简单了,必须提前做好相关…

SQL的模型类

在Qt的数据库中,除了QSqlQuery访问数据库,还可以使用QSqlQueryModel,QSqlTableModel和QSqlRelationalTableModel,这三个类是从QAbstractTableModel派生下来的,可以很直观的查看数据库的数据 QSqlQueryModel 提供一个…

Educational Codeforces Round 98 (Rated for Div. 2) D. Radio Towers

翻译: 坐标线上有𝑛2个城镇,编号从0到𝑛1。𝑖-th镇位于𝑖点。 你在城镇1、2、…、𝑛以12的概率建造一个无线电塔(这些事件是独立的)。之后,您希望将每个塔上的信号功率设置为从1到…

C/C++开发工具CLion v2022.3全新发布——支持C++ 20

CLion是一款专为开发C及C所设计的跨平台IDE。它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助开发人员在Linux、OS X和Windows上来开发C/C,同时它还使用智能编辑器来提高代码质量、自动代码重构并且深度整合CM…

C++ 当基类为抽象类时如何析构派生类

前言:本教程不涉及基础,稍微了解一下Cvirtual多态的知识就可以了,不了解的话可以先去看一下菜鸟教程,也可以看我往期的文章《virtual》、《虚函数表》 多态分为静态多态和动态多态 静态多态:也成为编译时的多态&#…

使用Word模板导出Word后,表格后面产生空白页

目录 背景 解决 参考 背景 项目中有导出Word功能,其实现逻辑是先整理一个Word文档,里面使用占位符;代码读取Word文档,然后替换占位符。 但出现这样的问题:填充某个表格后,表格后面出现了空白页。 解决 调查发现是段落标记导致的,如何显示段落标记?File -> Op…

生成对抗:DCGAN

DCGAN简介 Generative Adversarial Networks(GANs),GANs有两个模型组成,一个是生成器,用于训练生成假的数据,另一个是判别器,用于预测生成器的输出结果。其中生成器提供训练数据给判别器,提高判别器的准确率。判别器提供生成样本的预测结果,给生成器提供…

【Java系列】小小练习——带你回顾Java基本运算符

返回主篇章         👇 【Java】才疏学浅小石Java问道之路 Java小练习1. 练习一1.1 题目1.2 题解(附解析)2. 练习二2.1 题目2.2 题解(附解析)3. 练习三3.1 题目3.2 题解(附解析)小结1. 练习一 1.1 题目 一个三位数,将其拆分为个位、十位、百位后…

mac安装cocoapods完整步骤

一、概念理解 首先不要急着搜索终端命令,你需要明白安装 cocoapods 都需要什么环境,这对于安装途中如果遇到问题该如何解决很重要,很重要,很重要! 1、安装pods需要依赖 ruby 环境,而安装 ruby 你需要借助工…

[网鼎杯 2020 白虎组]PicDown(任意文件读取)

打开界面发现有一个get传参然后,尝试任意文件读取漏洞,/etc/passwd看一下,提示下载了一个jpg图片然后 打不开只能用 010查看一下信息 看来是猜对了,然后 如果日记没删掉可以查看历史记录 .bash_history呃呃呃差不到,那就看一下现…

Python 现代控制理论 —— 梯度下降法实现的线性回归系统

线性回归是有监督学习中的经典问题,其核心在于找到样本的多个特征与标签值之间的线性关系。样本集中的第j个样本可被表示为: 特征向量:标签值: 而线性回归系统给出权重向量: 使得该样本的预测值为: 当所有…