弱类型语言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 相关文章推荐
页面调用单个swf文件,嵌套出多个方法。
Nov 21 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
原生js和jquery中有关透明度设置的相关问题
Jan 08 Javascript
jquery html5 视频播放控制代码
Nov 06 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
详解关于vue2.0工程发布上线操作步骤
Sep 27 Javascript
JavaScript设计模式之观察者模式实例详解
Jan 16 Javascript
JS原生瀑布流效果实现
Apr 26 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
Jun 18 Javascript
一次让你了解全部JavaScript的作用域
Jun 24 Javascript
基于node+vue实现简单的WebSocket聊天功能
Feb 01 Javascript
AngularJS实现多级下拉框
Mar 25 Javascript
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实现微信公众号验证Token的示例代码
2019/12/16 PHP
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
js Dialog 实践分享
2012/10/22 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
基于vue2实现左滑删除功能
2017/11/28 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
python中尾递归用法实例详解
2015/04/28 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
django框架ModelForm组件用法详解
2019/12/11 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
英文版餐饮业求职信
2013/10/18 职场文书
中专毕业生自我鉴定
2013/11/21 职场文书
装饰活动策划方案
2014/02/11 职场文书
社区维稳工作方案
2014/06/06 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
2015年材料员工作总结
2015/04/30 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
法律意见书范文
2015/06/04 职场文书
医德医风学习心得体会
2016/01/25 职场文书
创业计划书之面包店
2019/09/12 职场文书
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android