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 函数对象的多重身份
Jun 28 Javascript
jquery统计用户选中的复选框的个数
Jun 06 Javascript
Bootstrap精简教程
Nov 27 Javascript
jquery利用json实现页面之间传值的实例解析
Dec 12 Javascript
JS触摸与手势事件详解
May 09 Javascript
微信小程序图片横向左右滑动案例
May 19 Javascript
给vue项目添加ESLint的详细步骤
Sep 29 Javascript
Vue开发之封装上传文件组件与用法示例
Apr 25 Javascript
vue-router跳转时打开新页面的两种方法
Jul 29 Javascript
浅析Vue中拆分视图层代码的5点建议
Aug 15 Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
Oct 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
PHP中文汉字验证码
2007/04/08 PHP
解析PHP可变函数的经典用法
2013/06/20 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
nohup的用法
2014/08/10 面试题
十一个高级MySql面试题
2014/10/06 面试题
机电一体化专业应届本科生求职信
2013/09/27 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
英语演讲开场白
2015/05/29 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书