欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Javescript(持续补充...)

程序员文章站 2022-03-03 07:57:05
...

  早期主要运行在浏览器端,用于表单验证以及动画的实现。随着js版本的升级,现在的js可以运行在nodejs上,而nodejs又可以安装在绝大多数的操作系统中,所以js可以运行在绝大多数的系统中,除了完成表单验证以及动画的实现还可以进行服务器端编程,甚至于硬件编程。

  JavaScript ( JS ) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是为开发Web 页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,例如 Node.js

  JavaScript 的标准是 ECMAScript 。截至 2012 年,所有的现代浏览器都完整的支持 ECMAScript 5.1,2015年6月17日,ECMA国际组织发布了 ECMAScript 的第六版,该版本正式名称为 ECMAScript 2015,但通常被称为 ECMAScript 6 或者 ES6。


1.JavaScript中什么是基本数据类型什么是引用数据类型?以及各个数据类型是如何存储的?

基本数据类型

  •  Number:数字类型。整数/浮点数
  •  String:字符串类型,需要使用单引号或者双引号括起来
  •  Boolean:布尔类型,取值为 true/false,通常用于条件判断
  •  Null:空引用数据类型
  •  Undefined:未定义类型
  •  Symbol(ES6新增数据类型):表示独一无二的值
  •  bigInt:表示任意大的整数

引用数据类型

  •  Object:对象,由键值对组成,通过使用大括号将所有键值对括起来。
    var dog = { name : 'Spot', breed : 'Dalmatian' };
  •  Array:数组,一个特殊的对象,包含了多个值,值与值之间使用逗号分隔开,所有的值通过中括号括起来。
    var myNameArray = ['Chris', 'Bob', 'Jim'];
    var myNumberArray = [10,15,40];
  •  Date:日期对象
     
  •  Function:函数,函数是代码执行单元,用于实现某些特殊的功能。
  • function add(a,b){
        return a + b;
    }

基本数据类型的数据直接存储在中;
引用数据类型的数据存储在中,在栈中保存数据的引用地址,这个引用地址指向的是对应的数据,以便快速查找到堆内存中的对象。

栈内存是自动分配内存的;而堆内存是动态分配内存的,不会自动释放。所以每次使用完对象的时候都要把它设置为null,从而减少无用内存的消耗。

2.=====有什么区别? 

===是严格意义上的相等,会比较两边的数据类型和值大小

    数据类型不同返回false;
    数据类型相同,但值大小不同,返回false。

==是非严格意义上的相等

    两边类型相同,比较大小;
    两边类型不同,根据以下规则,再进一步进行比较。
        Null == Undefined  -> true
        String == Number  -> 先将String转为Number,在比较大小
        Boolean == Number  -> 现将Boolean转为Number,在进行比较
        Object == String,Number,Symbol  ->  Object 转化为原始类型

 3.深拷贝与浅拷贝

主要针对于引用数据类型参数说的,浅拷贝表示仅拷贝引用地址,深拷贝表示对于对象的克隆。

1.浅拷贝

var a = {name:"terry",age:12}
// 浅拷贝【地址拷贝】
var b = a;
b.age++;
console.log(a.age);

2.深拷贝

a.借用JSON对象的parse和stringify
 

function deepClone(obj){

     let _obj = JSON.stringify(obj),

       objClone = JSON.parse(_obj);

     return objClone

}

let a=[0,1,[2,3],4],

   b=deepClone(a);

a[0]=1;

a[2][0]=1;

console.log(a,b);

b.借用JQ的extend方法

c.递归