js 里面的 function 与 Function

function 是 js 的标识符

Function 是 js 里面的一个 构造函数

1、new function 与 new Function 的区别

  new 运算符在 js 里面是 创建一个自定义的对象的实例 或者是 一个具有构造函数的本地对象的实例。

    语法:new constructor [ ( [ arguments ] ) ]

  new function() {......} 初始化一个可操作对象,相当于 new function 匿名函数() {......}

  

  new Function(‘参数‘, ‘函数体‘) 是实例化一个函数,相当于 function 函数名() {......}

  

2、立即执行函数 ( function(){...} () ) 和 ( function(){...} )()

// 1、
// 定义一个命名函数 a 并调用,正常运行
function a(){}a()
// 2、
// 2 假设使用匿名函数的方式呢?
function (){}()
//这种方式会报错:Uncaught SyntaxError: Unexpected token (
// 3、
//按到如上思路测试,寻找 2 报错的原因
function () {}
// 3 会报错,与 2 报错相同:Uncaught SyntaxError: Unexpected token (
// 4、
();
// 4 会报错:Uncaught SyntaxError: Unexpected token )
// 5、
(1);
// 5 不会报错正常运行// 6、(function(){});// 6 不会报错正常运行

可以看出,上述现象报错的原因都是:语法错误。究其原因发现是因为 ()运算符 的优先级高于 函数调用,而 () 运算符的括号内必须有表达式,否则就会有语法错误。

因此可以用 (function(){})() 的形式定义一个自调用的匿名函数

//1、
(1+2)(5+6);
//在进行如上表达式运算的时候,会报错:Uncaught TypeError: 3 is not a function,也就是说如果第一个表达式是一个 function 的话,就会正常运行。
//2、所以在保证整个运算为表达式运算的情况下,第一个子表达式为 function,则得出如下写法
(function(){}());
// 2 正常运行不会报错
// 3、因此可以得出如下写法也都是正确的
!function(){};
+function(){};
-function(){};
~function(){};
......

原文地址:https://www.cnblogs.com/z-one/p/8554384.html

时间: 2024-07-29 17:53:34

js 里面的 function 与 Function的相关文章

深入理解js里面的this

闲聊两句(可以忽略): 毕业有半年了,时间还过得真快,不过还好,感觉自己相对于刚毕业那会确实成长了很多:好久没有打游戏了(自己决心要戒掉的),消磨时光的时候就看看电影或者追追电视剧,再无聊就洗洗衣服.扫扫地,实在不行就拿起手边的书看.照我以前的习惯,我除了上课时间可能看书,其他的时间是完全看不进的,所以觉得这也是自己进步的地方. 最近自己想开始学习前端工程师现在最流行的东西,nodejs,听说可以写服务端.听说是事件驱动.听说...听说了很多很多关于它的好,所以我也决心要好好学这个.推荐我收集的

关于common.js里面的module.exports与es6的export default的思考总结

背景 公司项目需要裁切功能,基于第三方图片裁切组件vue-cropper(0.4.0版本),封装了图片裁切组件(picture-cut)(放在公司内部组件库,仅限于公司内部使用) 在vue-cropper从0.4.0更新到0.4.4后,picture-cut组件使用裁切功能时报错 vue-cropper0.4.0的index.js文件导出方式如下 var vueCropper = require('./vue-cropper') module.exports = vueCropper vue-c

如何才能通俗易懂的解释js里面的‘闭包’?

1. "闭包就是跨作用域访问变量." [示例一] var name = 'wangxi' function user () { // var name = 'wangxi' function getName () { console.log(name) } getName() } user() // wangxi 在 getName 函数中获取 name,首先在 getName 函数的作用域中查找 name,未找到,进而在 user 函数的作用域中查找,同样未找到,继续向上回溯,发现在

JS里面的DOME

一.JS中的DOM0事件模型      1.内容模型:直接将函数名作为HTML标签的某个事件属性的属性值;                例  rg:<button onlick="func()">按钮</button> 2.脚本模型:在JS脚本中通过事件属性进行绑定 : 例 eg:window.onlead = function(){}    但是它也有局限性即:同一个节点只能绑定一个同类型事件 二.JS中的DOM2事件模型     1.添加事件绑定:btn1

JS里面的call, apply以及bind

参考了这篇文章:http://www.tuicool.com/articles/EVF3Eb 给几个例子 function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1); 这个运行是什么呢?答案: 4. 运行的是add. 因为call是运行的调用者.将第一个参数作为this参数来使用. 再来一个例子 function Animal(){ this.name = "Animal";

JS里面的innerHTML

1.在输入框输入一句话 2.点击按钮,输入框里面的内容会显示在下面 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档</title> 6 7 <script> 8 /* 9 HTML 的属性操作

js里面的cookie保存登录名

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title></title> <script type="text/javascript"> //获取cookie function getCookie(c_name) { if (document.cookie.length > 0)

node.js里面的import

当在react项目中,使用import时,会把node_modules里面对应的依赖包导入到相应的位置.原理是:当执行import命令时,会先查找当前同级目录下的node_modules文件里面的对应依赖包,假如找到了,比如是ajv依赖包,然后找ajv依赖包下的main文件就ok了,如果没有main文件,就找ajv依赖包下的index.js文件.如果当前同级目录的node_modules文件里没有对应的依赖包,就继续往上级目录的node_modules文件进行搜索,依此类推,就ok了.

Js里面的arguments

了解这个对象之前先来认识一下javascript的一些功能: 其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载.Javascrip中国每个函数都会有一个Arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素.arguments.length为函数实参个数,arguments.callee引用函数自身. arguments他的特性和使用方法 特性: arguments对象和Functi