JS基础随笔(菜鸟必看篇)


Posted in Javascript onJuly 13, 2016

在学习的过程中总会一次次的冒出以前囫囵吞枣的地方,下面将今天学到的一下知识点记录下来方便以后查看。

JavaScript中的数据类型

简单(基本)数据类型:Number、String、Boolean、Undefined、Null

复杂(引用)数据类型: Object、Array、Date、function等

下面介绍一下简单(基本)数据类型和复杂(引用)数据类型的区别:

简单数据类型:在栈内直接存储值,如下图所示     

JS基础随笔(菜鸟必看篇)                                     

复杂数据类型:在栈内存储引用,如下图

    JS基础随笔(菜鸟必看篇)

在了解以上两种数据类型的存储方式之后可以区分两者的不同,可通过做以下的练习:

var a =10;
  var b = a;
  //问:当改变a的值后,b的值是否发生改变
  a=20;
  console.log(b);  // 10
var s1 = new Object();
var s2 = s1;
//问:改变s1的属性后,s2相同的属性是否改变
s1.name = "mh";
console.log(s2.name);    //mh
function f2(arr)
     {
       arr = [9,8,7,6,5];//产生新的对象
       arr[0]=-100;
     }
     var array = [1,2,4,7,5];
     f2(array);
     console.log(array[0]);//  1

JavaSript中的变量提升,function声明以及变量作用域

首先先看以下下面的一道面试题:

var num = 10;
    fun();
    function fun()
    {
      console.log(num);
      var num =20;
    }

在没有学习之前我会直接回答为10,现在学习JavaScript中的预编译概念知道了var关键字的提升概念以及function的声明概念知道了以上代码与下面代码等量:

var num;//全局作用域  遇到var和function 提升
     function fun() {
       var num ;  //局部做用户 遇到var 提升
       console.log(num);
       num =20;
     }
    num = 10;
    fun();

再看下面这道题:

//问题:为什么会出现下面的错误?
      //Uncaught TypeError:fnName is not a function

      console.log(fnName(1,2));
      var fnName = function (a,b) {
        return a + b;
      }

以上代码等同于以下代码:

var fnName;
      console.log(fnName(1,2));
      fnName = function (a,b) {
        return a + b;
      }

可以看到因为function在等号右面所以只会对var进行提升,从而会报“Uncaught TypeError:fnName is not a function”错误。

了解变量的作用域可以看以下代码:

f1();
        console.log(c);
        console.log(b);
        console.log(a);
        function f1() {
          var a = b = c = 20;
          console.log(c);
          console.log(b);
          console.log(a);
        }

对于var a=b=c=20; 这类连续赋值,在局部作用域内只会对a再声明,而b、c的作用域为全局作用域。所以只有全局作用域内的a报错为"Uncaught ReferenceError: a is not defined"。

以上这篇JS基础随笔(菜鸟必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript对象之内置对象Math使用方法
Apr 16 Javascript
jquery动态增加删除表格行的小例子
Nov 14 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
Dec 27 Javascript
JavaScript学习小结(一)——JavaScript入门基础
Sep 02 Javascript
JavaScript语言精粹经典实例(整理篇)
Jun 07 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
Mar 02 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
Dec 30 Javascript
解决layer.open后laydate失效的问题
Sep 06 Javascript
微信内置浏览器图片查看器的代码实例
Oct 08 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
JS自定义滚动条效果
Mar 13 Javascript
JS轮播图的实现方法2
Aug 25 Javascript
Bootstrap的Refresh Icon也spin起来
Jul 13 #Javascript
jQuery实现div横向拖拽排序的简单实例
Jul 13 #Javascript
用jQuery向div中添加Html文本内容的简单实现
Jul 13 #Javascript
使用jQuery加载html页面到指定的div实现方法
Jul 13 #Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 #Javascript
javascript类型系统——undefined和null全面了解
Jul 13 #Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 #Javascript
You might like
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
Pycharm学习教程(1) 定制外观
2017/05/02 Python
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
母亲节感恩活动记录
2014/03/16 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
怎么写工作检讨书
2014/11/16 职场文书
在职证明范本
2015/06/15 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
新手初学Java List 接口
2021/07/07 Java/Android