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 document.images实例
May 27 Javascript
什么是JavaScript
Aug 13 Javascript
javascript操作ul中li的方法
May 14 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 Javascript
基于jquery实现最简单的选项卡切换效果
May 08 Javascript
Node.js刷新session过期时间的实现方法推荐
May 18 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
Dec 01 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
React 路由懒加载的几种实现方案
Oct 23 Javascript
浅谈layui里的上传控件问题
Sep 26 Javascript
微信小程序wx.request的简单封装
Nov 13 Javascript
Node.js API详解之 console模块用法详解
May 12 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实现AES256加密算法实例
2014/09/22 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
php生成zip文件类实例
2015/04/07 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
python2.7到3.x迁移指南
2018/02/01 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
python实现银行账户系统
2021/02/22 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
渡河少年教学反思
2014/02/12 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
七一晚会主持词
2015/06/29 职场文书
应用最多的公文《通知》如何写?
2019/04/02 职场文书
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
Python os和os.path模块详情
2022/04/02 Python