游客您好
第三方账号登陆
Lv.9 管理员
1366号会员,1404活跃度,2018/12/07 加入学习
  • 149发帖
  • 139主题
  • 2关注
  • 4粉丝
这个人很懒,什么也没有留下。
最新推荐更多

[Javascrip] "name":function(){}和function name(){}和(function(){})()区别

[复制链接]
风起云甬 发表于 2020-3-23 11:08:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
  1. var vname = {
  2.     "name1":function(){
  3.         ...
  4.     }
  5.     "name2":function(){
  6.         ...
  7.     }
  8. }
复制代码
vname是一个对象字面量(错误习惯叫法:json对象)
  • name1是vname成员,类型为函数
  • name2是vname成员,类型为函数
  • 使用时可以这么用vname.name1()或者vname.name2()
   function name(){}会挂在window对象上
  举例:
  1. var person2 = {
  2.       "name":"lz",
  3.       "say" : function(){
  4.              alert('hello word!');
  5.       }
  6. }
  7. person2.say();
复制代码

  • 属性之间用逗号
  • 函数内部用分号

   区别分析:

  1. var vname = {
  2.   name1:function(){
  3.     console.log('name1');
  4.   }
  5. }
  6. vname.name1();//name1
  7. vname.name1 = function(){
  8.   console.log('name1 modify');
  9. }
  10. vname.name1();//name1 modify

  11. function name() {
  12.   console.log('fun name');
  13. }

  14. name();//fun name modify
  15. function name() {
  16.   console.log('fun name modify');
  17. }
  18. name();//fun name modify
复制代码


------------------------------------------------------------------------------------------------------------
(function(){})()是匿名函数:

  • 主要利用函数内的变量作用域,避免产生全局变量,影响整体页面环境,增加代码的兼容性。
  • (function(){})是一个标准的函数定义,后面的括号()是运行这个函数的意思但是没有复制给任何变量。所以是没有名字的函数,叫匿名函数。
  • 没有名字就无法像普通函数那样随时随地调用了,所以在他定义完成后就马上调用他,后面的括号()是运行这个函数的意思

"name":function(){}和function name(){}和(function(){})()区别,慧之家





---------------------------------------------------------------------------------------------------------
函数声明:使用function声明函数,并指定函数名。 

function setFn() {    // coding   }
函数表达式:使用function声明函数,但未指定函数名,将匿名函数赋予一个变量。

var setFn = function() {    // coding}
匿名函数:使用function关键字声明函数,但未指定函数名。匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。

function() {    // coding}

--------------------------------------------
(function(){})是一个标准的函数定义:

但是没有复制给任何变量。所以是没有名字的函数,叫匿名函数。相当于定义一个匿名的 function ,并执行这个function。

举例程序如:

  1. function newfun()

  2. {

  3. if (c)
  4. {

  5. setTimeout(arguments.callee, 1000);

  6. }

  7. document.getElementById("output").innerHTML=c;

  8. c--;

  9. }

  10. newfun();
复制代码

"name":function(){}和function name(){}和(function(){})()区别,慧之家

(function(){})();作用:

javascript中没用私有作用域的概念,如果在多人开发的项目上,你在全局或局部作用域中声明了一些变量,可能会被其他人不小心用同名的变量给覆盖掉。

根据javascript函数作用域链的特性,可以使用这种技术可以模仿一个私有作用域,用匿名函数作为一个“容器”。容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量,

所以( function(){…} )()内部定义的变量不会和外部的变量发生冲突,俗称“匿名包裹器”或“命名空间”。

JQuery使用的就是这种方法:

将JQuery代码包裹在( function (window,undefined){…jquery代码…} (window)中,在全局作用域中调用JQuery代码时,可以达到保护JQuery内部变量的作用。







• 本内容来源互联网,如涉及版权问题请及时联系站长
• 为防止代码解析,除代码框内<>为正常,其余请重新替换<>尖括号

发布资源 快速回复 站点服务大厅 搜索 官方群