首页 > 编程语言 >JavaScript高级

JavaScript高级

时间:2022-11-11 20:46:08浏览次数:63  
标签:function 上下文 console log JavaScript 高级 执行 函数

一、JavaScript基础总结

01、数据类型相关知识点

Ⅰ-基本(值)类型

  1. String: 任意字符串
  2. Number: 任意的数字
  3. boolean: true/false
  4. undefined: undefined
  5. null: null -->使用typeof时返回object
  6. symbol (ECMAScript 2016新增)。 -->Symbol 是 基本数据类型 的一种,Symbol 对象是 Symbol原始值的封装 (en-US) 。
  7. bigint, -->BigInt 是一种数字类型的数据,它可以表示任意精度格式的整数。

Ⅱ-对象(引用)类型

  1. Object: 任意对象
  2. Function: 一种特别的对象(可以执行) --内部包含可运行的代码
  3. Array: 一种特别的对象(key为数值下标属性, 内部数据是有序的)

Ⅲ-判断方法

①* typeof*

typeof 操作符返回一个字符串,表示未经计算的操作数的类型。

  • 可以判断: undefined/ 数值 / 字符串 / 布尔值 / function

  • 不能判断: null与object object与array

  • 注意: 运行console.log(typeof undefined)时,得到的的也是一个字符串,同时为小写!!--> 'undefined'

  • 代码示例

  // typeof返回数据类型的字符串表达
  var a

  //注意:typeof返回的是字符串
  console.log(a, typeof a, typeof a==='undefined',a===undefined )  // undefined 'undefined' true true
  console.log(undefined === 'undefined') //false
  a = 4
  console.log(typeof a==='number') //true
  a = 'hongjilin'
  console.log(typeof a==='string') //true
  console.log(typeof a==='String') //false  -->注意,返回的类型为小写
  a = true
  console.log(typeof a==='boolean') //true
  a = null
  console.log(typeof a, a===null) // 'object'  true
 let b={}
  console.log(typeof b,typeof null, '-------') // 'object' 'object'  -->所以Typeof不能判断null与object

②*instanceof*(判断实例方法)

  • 专门判断对象的具体类型

  • instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

  • 代码示例:

  var b1 = {
    b2: [1, 'abc', console.log],
 //可以简化成 b3:()=>()=> 'hongjilin'  -->高阶函数相关知识
    b3: function () {
      return  () =>{  return   'hongjilin'}
    }
  }
 /**使用instanceof进行对象判断*/
  console.log(b1 instanceof Object, b1 instanceof Array) // true  false
  console.log(b1.b2 instanceof Array, b1.b2 instanceof Object) // true true
  console.log(b1.b3 instanceof Function, b1.b3 instanceof Object) // true true

  /**使用typeof进行对象中某属性的判断*/
 console.log(typeof b1.b2, typeof null) // 'object' 'object'  
  console.log(typeof b1.b3==='function') // true
  console.log(typeof b1.b2[2]==='function') //true

  /**调用对象与数组中某函数示例*/
  b1.b2[2]('调用console.log打印hongjilin')    //调用console.log打印hongjilin
  console.log(b1.b3()()) // hongjilin

③*===*

具体可以看 MDN的JavaScript中的相等性判断

可以判断: undefined, null

简而言之,在比较两件事情时,双等号将执行类型转换三等号将进行相同的比较,而不进行类型转换 (如果类型不同, 只是总会返回 false )

Ⅳ-相关问题引出

① undefined与null的区别?

  • undefined代表定义未赋值

  • nulll定义并赋值了, 只是值为null

  • 代码示例

  var a
  console.log(a)  // undefined
  a = null
  console.log(a) // null

② 什么时候给变量赋值为null呢?

  • 初始赋值, 表明将要赋值为对象,可以用做约定俗成的占位符

  • 结束前, 让对象成为垃圾对象(被垃圾回收器回收)

  • 代码示例

  //起始,可以用做约定俗成的占位符
  var b = null  // 初始赋值为null, 表明将要赋值为对象
  //确定对象就赋值
  b = ['atguigu', 12]
  //最后在不使用的时候,将其引用置空,就可以释放b这个对象占用的内存      ---当没有引用指向它的对象称为垃圾对象
  b = null // 让b指向的对象成为垃圾对象(被垃圾回收器回收)

③ 严格区别变量类型与数据类型?

  • 数据的类型
  • 基本类型
  • 对象类型
  • 变量的类型(变量内存值的类型)
  • 基本类型: 保存就是基本类型的数据
  • 引用类型: 保存的是地址值(对象类型)

Ⅴ-补充知识点:

①符串对比*><以及charCodeAt()*方法

  1. Javascript字符串在进行大于(小于)比较时,会根据第一个不同的字符的ascii值码进行比较,当数字(number)与字符串(string)进行比较大小时,会强制的将数字(number)转换成字符串(string)然后再进行比较
(function(){
    console.log('13'>'3'); // 输出:false
    console.log(5>'6');  // 输出: false
    console.log('d'>'ABDC') // 输出: true
    console.log(19>'ssf') // 输出 false
    console.log('A'>'abcdef') // 输出 false
})()
  1. 手动转换为ascii后相减,用正负数表示大小
sorter={(a:string,b:string)=> a.charCodeAt()-b.charCodeAt()}

02、数据,变量, 内存的理解

Ⅰ-什么是数据?

  1. 存储在内存中代表特定信息的'东西', 本质上是0101...
  2. 数据的特点: 可传递可运算 -->let a=0;b=a

    标签:function,上下文,console,log,JavaScript,高级,执行,函数
    From: https://www.cnblogs.com/zhaostudy/p/16881803.html

相关文章

  • JavaScript for循环的终止问题
    js的for循环,return,break,continue的使用方式和解释letfuncFor=()=>{for(leti=0;i<4;i++){if(i==2){//return/......
  • javascript基础 this指向
    this指向:this永远指向一个对象;this的指向完全取决于函数调用的位置;场景1:在全局环境中调用,this指向window对象vara='a'functionfoo(){console.log(this.a)......
  • javascript基础算法之数组元素两两相加等于某个固定值,并得出它们的对数
      letarr=[1,2,6,6,7,8,11,12,13,4,4]letnum=12functionsolution(arr,target){console.log('给出指定数组--->',arr)console.log('给出指定数......
  • javascript基础算法之判断一个随机整数是否为质数
    质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;functionsolution(num){if(num<=1){return'数据错......
  • JavaScript常用工具函数
    检测数据是不是除了symbol外的原始数据functionisStatic(value){return(typeofvalue==='string'||typeofvalue==='number'||typeofvalue......
  • JavaScript中常见的八个陷阱总结
    1.你是否尝试过对数组元素进行排序?JavaScript默认使用字典序(alphanumeric)来排序。因此, [1,2,5,10].sort()的结果是[1,10,2,5]。如果你想正确的排序,应该这样做: [1......
  • [JavaScript-10]this指向
    1.默认绑定//全局环境指向windowconsole.log(this);//函数独立调用,函数内部this指向windowfunctionfn(){console.log(this);}fn();//函数当做对象方法......
  • 20个高级Java面试题汇总
    什么是可变参数?断言的用途?什么时候使用断言?什么是垃圾回收?用一个例子解释垃圾回收?什么时候运行垃圾回收?垃圾回收的最佳做法?什么是初始化数据块?什么是静态初始化器?什么是实例......
  • 11:高级部分-MySQL
    目录​​(一)view视图​​​​1.开场​​​​2.view视图创建、使用以及作用​​​​3.显示视图​​​​4.更新和删除视图​​​​5.视图算法:temptable,merge​​​​(......
  • Android中Java和JavaScript交互
    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。如何实现......