码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JavaScript 基础


    JavaScript 基础

    一、概念简介二、基本类型2.1 数值类型2.2 字符类型2.3 基本类型检测三、引用类型3.1 Object 类型3.2 Array 类型3.3 Date 类型3.4 Funcation 类型3.5 引用类型检测四、内置对象4.1 Global 对象4.2 window 对象五、作用域与闭包5.1 作用域5.2 作用域链5.3 闭包六、对象设计 6.1 数据属性6.2 访问器属性6.3 读取属性6.4 创建对象

    一、概念简介

    JavaScript 是一种专为与网页交互而设计的脚本语言,由以下三个部分组成:

    • ECMAScript:由 ECMA-262 定义,提供核心语言功能;
    • 文档对象模型 (DOM):提供访问和操作网页内容的方法和接口;
    • 浏览器对象模型 (BOM):提供与浏览器交互的方法和接口。

    ECMAScript 提供了语言的核心功能,它定义了以下七种数据类型:

    • 六种基本数据类型:Undefined,Null,Boolean,Number,String,Symbol ( ES 6新增 );
    • 一种引用数据类型:统称为 Object 类型;具体又细分为 Object,Array,Date,RegExp,Function 等类型。另外和 Java 语言类似,对于布尔,数值,字符串等基本类型,分别存在其对应的包装类型 Boolean,Number,String,但通常我们并不会使用到这些包装类型,只需要使用其基本类型即可。

    二、基本类型

    2.1 数值类型

    1. 进制数值

    ECMAScript 中的 Number 支持以下三种常用进制:

    • 十进制:正常数值就是十进制;
    • 八进制:八进制字面值的第一位必须是零(0),然后是八进制数字序列(0~7);
    • 十六进制:十六进制字面值的前两位必须是 0x,后跟任意的十六进制数字(0~9 及 A~F)。
    console.log(56); // 56 console.log(070); // 56 console.log(0x38); // 56
    

    2. 浮点数值

    ECMAScript 的数值类型同样支持浮点数,但是由于保存浮点数值需要的内存空间是保存整数值的两倍,因此 ECMAScript 会尽量将浮点数值转换为整数值存储:

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

    和其他语言类似,浮点数中的数值也是不精准的,示例如下:

    var a = 0.1; var b = 0.2;  a + b ; // 0.30000000000000004 a+b === 0.3 ; // false
    

    如果想要对浮点数进行精确计算,可以使用 decimal.js , math.js 等第三方库。

    3. 科学计数法

    ECMAScript 支持使用科学计数法来表达数值:

    8e-2 // 0.08 8e2 // 800
    

    4. parseInt() \ parseFloat()

    parseInt 可以用于解析字符串并返回整数,parseFloat 用于解析字符串并返回浮点数:

    parseInt("56"); // 56 parseInt("0x38", 16); // 56 支持使用第二个参数来表示转换的进制 parseInt("56.6"); // 56  parseFloat("12.2"); // 12.2  parseInt("blue"); // NaN NaN用于表示一个本来要返回数值的操作却未返回数值的情况
    

    5. toFixed()

    toFixed 用于保留指定位数的小数,但需要注意的是其四舍五入的行为是不确定的:

    1.35.toFixed(1) // 1.4 正确 1.335.toFixed(2) // 1.33 错误 1.3335.toFixed(3) // 1.333 错误 1.33335.toFixed(4) // 1.3334 正确 1.333335.toFixed(5) // 1.33333 错误 1.3333335.toFixed(6) // 1.333333 错误
    

    想要解决这个问题,需要重写 toFixed 方法并通过判断最后一位是否大于或等于5来决定是否需要进位,具体代码如下:

    1. // toFixed兼容方法
    2. Number.prototype.toFixed = function(len){ if(len>20 || len<0){ throw new RangeError('toFixed() digits argument must be between 0 and 20'); } // .123转为0.123 var number = Number(this); if (isNaN(number) || number >= Math.pow(10, 21)) { return number.toString(); } if (typeof (len) == 'undefined' || len == 0) { return (Math.round(number)).toString(); } var result = number.toString(), numberArr = result.split('.'); if(numberArr.length<2){ //整数的情况 return padNum(result); } var intNum = numberArr[0], //整数部分 deciNum = numberArr[1],//小数部分 lastNum = deciNum.substr(len, 1);//最后一个数字 if(deciNum.length == len){ //需要截取的长度等于当前长度 return result; } if(deciNum.length < len){ //需要截取的长度大于当前长度 1.3.toFixed(2) return padNum(result) } //需要截取的长度小于当前长度,需要判断最后一位数字 result = intNum + '.' + deciNum.substr(0, len); if(parseInt(lastNum, 10)>=5){ //最后一位数字大于5,要进位 var times = Math.pow(
  • 相关阅读:
    Spring学习|Spring配置:别名、import、依赖注入:构造器注入、Set方式注入(重点)、拓展方式注入
    关于el-upload看这一篇就够了
    React的jsx的用法
    [附源码]SSM计算机毕业设计疫情期间回乡人员管理系统JAVA
    仿游戏热血江湖游戏类22(FLD_FJ_中级附魂)
    匈牙利算法 -- Acwing 861. 二分图的最大匹配
    基于ChatGPT打造安全脚本工具流程
    「ETL趋势」FDL数据开发支持版本管理、实时管道支持多对一、数据源新增支持神通
    vscode中运行脚手架项目报表
    复杂多层布局的初级智能文本提示器
  • 原文地址:https://blog.csdn.net/yd901020/article/details/127733578
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号