弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】


Posted in Javascript onAugust 07, 2019

本文实例讲述了弱类型语言javascript开发中的一些坑。分享给大家供大家参考,具体如下:

测试1: (未声明变量自动提升为全局变量)

test1();
function test1() {
  function setName() {
    name = '张三'; // 此处没有var声明,提升至全局
  }
  setName();
  console.log(name);// '张三'
}

测试2: (函数内部局部变量的变量提升)

test2();
function test2() {
  var a = 1;
  function haha() {
    console.log(a);
    var a=1;
  }
  haha(); // undefined
}

测试3: (给window对象挂载属性,作用域提升至全局)

test3();
function test3() {
  var b=2;
  function hehe(){
    window.b = 3; // 此时的b为全局变量的b
    console.log(b); // 此时的b是函数test3()里的b为2
  }
  hehe();
}

测试4: (变量提升,局部作用域的综合)

test4();
function test4() {
  c = 5;
  function heihei() {
    var c;
    window.c = 3;
    console.log(c); // 函数heihei内的c为undefined
    console.log(window.c); // 3
  }
  heihei();
}

测试5: (数组的长度的问题)

test5();
function test5() {
  var arr = [];
  arr[0] = '1';
  arr[1] = 'b';
  arr[9] = 100;
  console.log(arr.length); // 10
}

测试6: (等与全等的问题)

test6();
function test6() {
  var a = 1;
  console.log(a++); // 1
  console.log(++a); // 3
  console.log(null == undefined); // true
  console.log(null === undefined);// false
  console.log(1 == "1"); // true
  console.log(1 === "1"); // false
  console.log(NaN === NaN) // false;
}

测试7: (类型相关)

test7();
function test7() {
  console.log(typeof 1); // number
  console.log(typeof "hello"); // string
  console.log(typeof typeof "hello"); // string
  console.log(typeof !!"hello"); // boolean
  console.log(typeof /[0-9]/); // object
  console.log(typeof {}); // object
  console.log(typeof null); // object
  console.log(typeof undefined); // undefined
  console.log(typeof [1, 2, 3]); // object
  console.log(toString.call([1, 2, 3])); // [object Array]
  console.log(typeof function () {}); // function
}

测试8: (parse函数相关)

test8();
function test8() {
  console.log(parseInt(3.14));// 3
  console.log(parseFloat('3.01aaa'));// 3.01
  console.log(parseInt('aa1.2'));// NaN;
  console.log(parseInt('8.00',16));// 8
  console.log(parseInt('0x8',16));// 8
  console.log(parseInt('8.00',10));// 8
  console.log(parseInt('010',8));// 10
  console.log(parseInt('1000',2));// 1000
}

测试9: (变量提升,函数提升与return后阻断执行)

test9();
function test9() {
  function bar() {
    return foo;
    foo = 10;
    function foo(){};
  }
  console.log(typeof bar()); // 'function'
}

测试10: (作用域与函数提升)

test10();
function test10() {
  var foo = 1;
  function bar() {
    foo = 10;
    console.log(typeof foo);
    return;
    function foo(){};
  }
  bar(); // number
  console.log(foo); // 1
}

测试11: (变量提升与函数提升)

test11();
function test11() {
  console.log(typeof a); // function
  var a = 3;
  function a(){};
  console.log(typeof a); // number
}

测试12: (arguments对象)

test12();
function test12() {
  function foo(a) {
    console.log(a);// 1
    arguments[0] = 2;
    console.log(a);// 2
    console.log(arguments.length);// 3
  }
  foo(1,3,4);
}

测试13: (中间函数名,直接使用会报错)

test13();
function test13() {
  var foo = function bar(name) {
    console.log("hello " + name);
  }
  foo("world");
  console.log(bar); // 此处会报错 bar is not defined
}

测试14: (在js中定时器,最后执行,涉及到的知识点是事件循环和事件队列)

test14();
function test14() {
  function foo() {
    console.log('I am foo');
  }
  console.log('正常执行');
  setTimeout((function(){
    console.log('定时器大灰狼来啦');
  }),0);
  foo();
}

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery 入门级学习笔记及源码
Jan 22 Javascript
面向对象继承实例(a如何继承b问题)(自写)
Jul 01 Javascript
使用jquery获取网页中图片高度的两种方法
Sep 26 Javascript
js window对象属性和方法相关资料整理
Nov 11 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
Jul 07 Javascript
判断js的Array和Object的实现方法
Aug 29 Javascript
AngularJs $parse、$eval和$observe、$watch详解
Sep 21 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
Jan 13 Javascript
教你5分钟学会用requirejs(必看篇)
Jul 25 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
Sep 20 jQuery
在Vue环境下利用worker运行interval计时器的步骤
Aug 01 Javascript
Vue实现小购物车功能
Dec 21 Vue.js
JS中getElementsByClassName与classList兼容性问题解决方案分析
Aug 07 #Javascript
javascript for循环性能测试示例
Aug 07 #Javascript
弱类型语言javascript中 a,b 的运算实例小结
Aug 07 #Javascript
解决一个微信号同时支持多个环境网页授权问题
Aug 07 #Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 #Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
Aug 07 #Javascript
javascript中的数据类型检测方法详解
Aug 07 #Javascript
You might like
php继承的一个应用
2011/09/06 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
JavaScript工具库之Lodash详解
2019/06/15 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
详解Python验证码识别
2016/01/25 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
Python用SSH连接到网络设备
2021/02/18 Python
携程英文网站:Trip.com
2017/02/07 全球购物
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
先进集体获奖感言
2014/02/13 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
小学数学教学随笔
2015/08/14 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python