js的一些知识点整理

js的数据类型以及堆栈

(1)基本类型:存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配。
  6种基本数据类型有Undefined、Null、Boolean、Number 、 String和Symbol,它们是直接按值存放的,所以可以直接访问。
(2)引用类型:存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况开进行特定的分配。
  当我们需要访问引用类型(如对象,数组,函数等)的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。

JS的预处理机制

  • 变量先声明再定义

javascript预处理机制

 javascript预处理机制

  • 声明式函数进行预处理,既声明又定义( 声明式函数:function fn(){} )
  • 变量和声明式函数同名时,函数先声明和定义,因此变量总会覆盖函数

JS中预处理是一种好无节操的机制

例子:

  var fn = 3
  var fn = function () {
    console.log('aaa')
  }
  function fn() {
    console.log('bbb')
  }
 fn(); // aaa

 解释:1变量和声明式函数同名时,函数先声明和定义  var fn = function(){console.log('bbb')}

            2.声明变量 var fn;var fn;

            3.定义变量 fn = 3; fn = function () { console.log('aaa') };

            4.后面的覆盖前面的 最终fn = function () { console.log('aaa') }

            5.执行fn()函数,打印出‘aaa’

例子变形:

  fn(); // bbb
  var fn = 3
  var fn = function () {
    console.log('aaa')
  }
  function fn() {
    console.log('bbb')
  }

1.声明式函数声明和定义 var fn =  function(){console.log('bbb')}

2.变量声明 var fn; var fn;

3.执行fn(); 打印‘bbb’

例子再变形

 var fn = 3
  fn();
  var fn = function () {
    console.log('aaa')
  }
  function fn() {
    console.log('bbb')
  }

前面的和上面一样,对声明函数 声明定义,对变量声明然后就多了 fn = 3;对变量定义;然后执行fn();得到结果就是fn is not a function 

函数内变量声明有无var的区别 

(1)有var的声明,作用域在函数内部,外部直接获取不到

 function ss() {
   var a = 5;
  }
  ss();
  alert(a);//a未定义

(2)无var的声明,为全局函数,外部可以直接使用

  function ss() {
    a = 5;
  }
  ss();
  alert(a);//5

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值