资讯专栏INFORMATION COLUMN

javaScript的变量、值与类型

bingchen / 2402人阅读

摘要:语言类型包括和。对语言引擎和开发人员来说,类型是值的内部特征,它定义了值的行为,以使其区别于其他值有七种内置类型空值未定义布尔值数字字符串对象符号,中新增除对象之外,其他统称为基本类型。

本文主要是奇舞前端特训营的笔记
https://t.75team.com/video

变量

变量声明的三种方法

1.var-声明一个变量,可选择将其初始化为一个值

 - 不支持块级作用域
 - var存在变量提升
console.log(a === undefined) //true
        var a = 10;

2.let-声明一个块级作用域变量,可选择将其初始化一个值

- 块级作用域
{
    let x = 10;
}
console.log(typeof x); //undefined
- 同一作用域中不允许重复声明
- 暂存死区
- 循环中的let作用域
- 浏览器兼容性

3.const-声明一个只读的常量 绑定的值不可以再次改变

类型

ECMAScript语言中所有的值都有一个对应的语言类型。ECMAScript语言类型包括Undefined、Null、Boolean、String、Number和Object。
对语言引擎和开发人员来说,类型是值的内部特征,它定义了值的行为,以使其区别于其他值

JavaScript有七种内置类型:

空值(null
未定义(undefined
布尔值( boolean
数字(number
字符串(string
对象(object
符号(symbol,ES6中新增)
除对象之外,其他统称为“基本类型”。

Boolean
值:true和false
需要注意:0,"", null, undefined, 会被隐式的转化为false,其他都为true

建议采用严格比较,可以通过!!将非boolean转化为boolean

比较操作符总会返回boolean

布尔操作符&&和||不会转化类型

&&和||具有短路特性

console.log(null !== undefined, null == undefined); //true, true
console.log(1 && 2) //2

Number

数值范围
整数-2^53~2^53

   超过后会有精度丢失

小数精度Number.EPSILON
Infinity, Number.MAX_VALUE, Number.MIN_VALUE

浮点数精度问题
console.log(0.2+0.4) //0.6000000000000001
限制精度

   console.log((0.2+0.4).toFixed(2)); // 0.60

String

引号规范和转义
建议使用单引号

字符串类型转换
console.log("1"+2, "2"-1);//"12", 1 隐式类型转化
字符串模版

Object

对象是个引用类型

值类型和包装类型
包装类型typeof是object

对象的copy

let conf = {
    adapter: "sqlite",
    db: {
        aqlite: {
            name: "xxx.sqlite"
        },
        mysql: {
            name: "xxx",
            username: "work",
            passwd: "***"
        }
    }
}

// ES6浅拷贝
let copied = Object.assign({}, conf);
copied.adapter = "mySql";
console.log(conf.adapter); //sqlite
console.log(copied.adapter); //mySql

copied.db.mySql.name = "yyy.sqlite";
console.log(conf.db.mySql.name); //yyy.sqlite

// 深拷贝
function deepCopy(des, src){
    for( var key in src){
        let prop = src[key];
        if(typeof prop === "object"){
            des[key] = des[key] || {}; // typeof{} === object
            deepCopy(des[key], src[key]);
        }else {
            des[key] = src[key];
        }
    }
    return des;
}
let deepCopied = deepCopy({}, conf);
deepCopied.db.sqlite.name = "zzz.sqlite";
// 深拷贝
console.log(deepCopied.db.sqlite.name, conf.db.sqlite.name);//"zzz.sqlite, yyy.sqlite"
对象的类型和构造器

new和constructor

new是一种语法糖

prototype

//原型链
// __proto__暴力构建原型链
var a = {x: 1},b = {y: 2}, c = {z: 3};
b.__proto__ = a;
c.__proto__ = b;
console.log(c);

// 使用Object.create(a)构建原型链
var a = {x: 1};
var b = Object.create(a);
b.y = 2;
var c = Object.create(b);
c.z = 3;
console.log(c);

// 使用构造器构建原型链
function A(){
    this.x = 1;
}
function B(){
    this.y = 2;
}
B.prototype = new A();
function C(){
    this.z = 3;
}
C.prototype = new B();
var c = new C();
console.log(c);

// 三种方式都是构建原型链

一张图片有助于理解

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81172.html

相关文章

  • JavaScript-简单及复杂数据类型详解

    摘要:打开首先看简单数据类型拿举个栗子看懂这一段应该不难。我们把基本数据类型中的这种操作称为拷值,方便记忆。总结简单数据类型用拷的,复杂数据类型用借的。 本篇不详细介绍每种数据类型的用途,如有需要请访问JS数据类型。 JavaScript中的数据类型 简单(基本)数据类型: Number、String、Boolean、Undefined、Null复杂(引用)数据类型: Object、Arra...

    psychola 评论0 收藏0
  • JavaScript 之 核心语法 [ 语句 ]

    摘要:语句概况描述在代码中,使用分号分隔的可以叫做是语句语句块在代码中,大括号表示语句块语句块中可以存在一条或多条语句语句的分类条件语句循环语句跳转语句条件语句描述通过对条件表达式的计算结果进行判断,来决定要执行的语句语句语法条件表达式语句块当 语句概况 描述 在JavaScript代码中,使用分号(;)分隔的可以叫做是语句 语句块 在JavaScript代码中,大括号({})表示语句块 ...

    stormjun 评论0 收藏0
  • JavaScript 需要检查变量类型

    摘要:一返回值调用外部方法获取的值需要对类型做判断,因为我们对方法返回的值是有期望值类型,但是却不能保证这个接口返回的值一直是同一个类型。 19年目标:消灭英语!我新开了一个公众号记录一个程序员学英语的历程 有提升英语诉求的小伙伴可以关注公众号:csenglish 程序员学英语,每天花10分钟交作业,跟我一起学英语吧 javascript作为一门动态类型语言,具有很高的动态灵活性,当定义函数...

    Songlcy 评论0 收藏0
  • JavaScript基本数据类型

    摘要:中有种基本数据类型和。在介绍的基本数据类型前,有必要提到两个关键字和。由于中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是关键字。输出的结果为用于表示由零数字或字符组成的字符序列,即字符串。 如果你是一名IT前端人员,怎么会不懂JavaScript的美?如果你是一名前端在学人员,接触JavaScript后,怎么会不明白JavaScript中基本数据类型?大家都...

    ispring 评论0 收藏0
  • JavaScript面向对象中严格模式个人分享

    摘要:严格模式严格模式的概念所谓严格模式就是对中的一种限制性更强的方式属于代码的一种强制规则来规范代码的格式简单的说就是必须按照严格模式的规则书写代码否则就会报错严格模式修正了一些引擎难以优化的错误同样的代码有些时候严格模式会比非严格模式下更加快 严格模式 严格模式的概念 所谓严格模式就是对JavaScript中的一种限制性更强的方式. 属于代码的一种强制规则,来规范代码的格式简单的说就是...

    lordharrd 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<