javascript基础知识总结

布满荆棘的人生 2022-06-14 22:52 431阅读 0赞

javaScript基础知识总结

不涉及闭包、原型链、面向对象等

JS的组成

  • DOM: Document Obejct Model 文档对象模型 提供了一整套操作页面元素的API
  • BOM: Browser Object Model 浏览器对象模型 提供了一整套操作浏览器相关信息的API
  • ECMAScript JS的语言标准规范

JS中的数据类型

基本数据类型

  1. string
  2. numeber
  3. boolean

引用数据类型

  1. Object
  2. function
  3. Array
  4. Data
  5. Math
  6. String
  7. Number
  8. Boolean
  9. RegExp

空数据类型

  1. null
  2. undefined
    //注意: null == undefined 会返回true

获取数据类型的方式

  1. typeof 数据 返回字符串类型
  2. instanceof 某对象 返回true false
  3. Object.prototype.toString.call(obj) 返回对象类型
  1. 使用typeof获取到除了function之外的所有的引用类型的数据的类型都是object

2。 使用typeof获取null的数据类型,获取到的是object

in关键字

  1. for-in 遍历对象的属性

    for(var k in obj){

    1. console.log k; //获取对象属性
    2. console.log obj[key] //获取对象属性值
    3. }
  2. 属性名 in 对象 判断对象能否访问某个属性 返回值为布尔值;

delete关键字

  1. 删除没有使用var声明的变量

    a = 10;
    console.log(delete a);
    // 会报错

  2. 删除对象的属性

    var obj = {

    1. obj.name = 'jack',
    2. obj.age = '18'
    3. }
    4. delete obj.name;
    5. console.log(obj);

逻辑中断

  1. ||中断

    表达式1 || 表达式2

    1. 如果表达式1为真,则返回表达式1,否则返回表达式2
  2. &&中断

    表达式1 && 表达式2

    1. 如果表达式1为假,则返回表达式1,否则返回表达式2

break continue

  1. break跳出整个循环,继续执行循环之后的代码
  2. continue跳出本次循环,继续下次循环

对象的动态特性

在对象创建完成之后,可以随时的为对象新增成员,这样的特性是动态特性

  1. 点语法
    js 对象名.属性名 = 值
    2.关联数组语法

    对象名[属性名] = 值

值类型和引用类型

值类型

直接存储数据本身的的数据就是值类型的数据

引用类型

存储的是数据的地址,数据单独存储起来的数据就是 引用类型的数据

值类型的赋值特征

直接将存储的数据复制一份交给新的变量,两个变量值相同,但是存储空间不同,相互独立,互不影响

引用类型的复制特征

直接将数据的地址复制一份交给新的变量,两个bianl指向同一个对象,修改其中一个,另外一个也会受到影响

异常处理

  1. try{
  2. 可能会出错的代码
  3. }catch(e){
  4. 出后的处理代码
  5. //e 异常信息
  6. }finally{
  7. //无论是否出错都会执行的代码
  8. //一般用来做释放资源的操作
  9. }
  10. 手动抛出异常的语句 throw
  11. throw anything anything可以是任何类型的数据)
  12. // throw出去的东西就是被catch捕获的 通过参数e传给我们

浅拷贝和深拷贝

浅拷贝

  1. var obj = {
  2. name : "jack",
  3. age : 18,
  4. car : {
  5. car : "大黄蜂"
  6. }
  7. }
  8. var obj1 = {}
  9. for (var k in obj) {
  10. obj1[k] = obj[k]
  11. }
  12. /* * * 经过对象遍历赋值后,obj1的第一层键值对完全和obj的键值对相等,但是obj1中的car和obj中的car指向的是同一个对象,修改obj1中的car对象的值,对应的obj中的car对象的值也会改变 这就是浅拷贝 */

深拷贝

  1. var obj = {
  2. name : "jack",
  3. age : 18,
  4. car : {
  5. car : "大黄蜂"
  6. }
  7. }
  8. var obj1 = JSON.parse(JSON.toStringify(obj));
  9. //上面大概的实现原理是 先将obj里的数据全部转换成字符串,然后再通过parse方法转换成对象,此时obj中的car对象也会被重新创建一份,
  10. // 所以obj中的car 和obj1中的car不再是指向同一个car ,这时修改其中一个,另一个也不会发生变化,这时深拷贝

分享一些面试题

数据类型测试

  1. 判断代码输出结果

    var test = 2;
    console.log(“test is a Number—“ + (test.constructor == Number));
    function test1() { };
    var t1 = new test1();
    var test2 = “37degree”;

    console.info(“typeof test—“ + typeof test);
    console.info(“typeof test1—“ + typeof test1);
    console.info(“typeof t1—“ + typeof t1);
    console.info(“t1 instanceof test1—“ + (t1 instanceof Object));
    console.info(“test instanceof Array—“ + (test instanceof Array));

参考答案

  1. test is a Number -- true
  2. typeof test -- number
  3. typeof test1 -- function typeof t1 -- object t1 instanceof test1 -- true test instanceof Array -- false

分析:

  1. 首先涉及到 JS 预解析的概念,这里的 变量申明 函数申明 都会被预解析处理,知道这个以后,那么下面一个一个来分析:
  2. 第一个:
  3. 因为 test = 2 先执行了,所以这里 test 的值已经是一个数字了,那么 test.constructr 就是 Number,所以下面这个打印 true
  4. console.log("test is a Number--" + (test.constructr == Number))
  5. 第二个:
  6. 原因同上,需要注意 typeof 得到的结果 number n 是小写的!
  7. 第三个:
  8. test1 是一个函数,typeof 值为 function 第四个: 通过 new 得到的结果一定是一个 Object,所以 t1 typeof 结果为 object 第五个: 这个题有点误导人的,首先出题人写的是 instanceof test1,但真正计算的却是 instanceof Object,请注意它们的差异!不过不影响结果的,结果都是 true 第六个: test 是一个数字,所以他的构造函数应是 Number,而不是 Array,所以结果为 false
  1. 请写出以下运算结果:

    alert(typeof null);
    alert(typeof undefined);
    alert(typeof NaN);
    alert(NaN == undefined);
    alert(NaN == NaN);
    var str = “123abc”;
    alert(typeof str++);
    alert(str);

它们输出的结果依次是:

  1. alert(typeof null); // object
  2. alert(typeof undefined); // undefined
  3. alert(typeof NaN); // number
  4. alert(NaN == undefined); // false
  5. alert(NaN == NaN); // false
  6. var str = "123abc";
  7. alert(typeof str++); // number
  8. alert(str); // NaN

发表评论

表情:
评论列表 (有 0 条评论,431人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript知识总结

    它是什么? JavaScript是一种基于对象和事件驱动的、并具有安全性能的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美