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 相关文章推荐
使用jQuery模板来展现json数据的代码
Oct 22 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
jQuery实现点击该行即可删除HTML表格行
Oct 17 Javascript
jquery队列函数用法实例
Dec 16 Javascript
基于jQuery实现的美观星级评论打分组件代码
Oct 30 Javascript
js调出上下文菜单的实例
Dec 17 Javascript
javascript自定义滚动条实现代码
Apr 20 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
Bootstrap图片轮播效果详解
Oct 17 Javascript
菊花转动的jquery加载动画效果
Aug 19 jQuery
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 Javascript
KOA+egg.js集成kafka消息队列的示例
Nov 09 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
PHP5 安装方法
2007/01/15 PHP
PHP如何实现跨域
2016/05/30 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
Python访问纯真IP数据库脚本分享
2015/06/29 Python
Python 多核并行计算的示例代码
2017/11/07 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
Python 如何测试文件是否存在
2020/07/31 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
携程英文网站:Trip.com
2017/02/07 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
计算机应用专业毕业生求职信
2013/10/24 职场文书
公司会计岗位职责
2014/02/13 职场文书
大学开学感言
2015/08/01 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python