当前位置: 首页 > news >正文

如何仿做别人的网站徐州网站制作费用

如何仿做别人的网站,徐州网站制作费用,大门户wordpress主题门户新闻,微股东微网站制作平台函数 由于JavaScript的函数也是一个对象#xff0c;所以类似function abs(v){}函数实际上是一个函数对象#xff0c;而函数名abs可以视为指向该函数的变量。 因此#xff0c;第二种定义函数的方式如下#xff1a; var abs function (x) {if (x 0) {return x;} else {…函数 由于JavaScript的函数也是一个对象所以类似function abs(v){}函数实际上是一个函数对象而函数名abs可以视为指向该函数的变量。 因此第二种定义函数的方式如下 var abs function (x) {if (x 0) {return x;} else {return -x;} }; 在这种方式下function (x) { ... }是一个匿名函数它没有函数名。但是这个匿名函数赋值给了变量abs所以通过变量abs就可以调用该函数。 此方式按照完整语法需要在函数体末尾加一个;表示赋值语句结束。 由于JavaScript允许传入任意个参数而不影响调用因此传入的参数比定义的参数多也没有问题虽然函数内部并不需要这些参数 abs(10, blablabla); // 返回10 abs(-9, haha, hehe, null); // 返回9 传入的参数比定义的少也没有问题 abs(); // 返回NaN 此时abs(x)函数的参数x将收到undefined计算结果为NaN。 要避免收到undefined可以对参数进行检查 if (typeof x ! number) {throw Not a number; } arguments JavaScript还有一个免费赠送的关键字arguments它只在函数内部起作用并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array function foo(x) {alert(x); // 10for (var i0; iarguments.length; i) {alert(arguments[i]); // 10, 20, 30} } foo(10, 20, 30); 利用arguments你可以获得调用者传入的所有参数。也就是说即使函数不定义任何参数还是可以拿到参数的值 function abs() {if (arguments.length 0) {return 0;}var x arguments[0];return x 0 ? x : -x; } abs(); // 0 abs(10); // 10 abs(-9); // 9 实际上arguments最常用于判断传入参数的个数。你可能会看到这样的写法 // foo(a[, b], c)// 接收2~3个参数b是可选参数如果只传2个参数b默认为null function foo(a, b, c) {if (arguments.length 2) { // 实际拿到的参数是a和bc为undefinedc b; // 把b赋给cb null; // b变为默认值} } 要把中间的参数b变为“可选”参数就只能通过arguments判断然后重新调整参数并赋值。 rest参数 function foo(a, b, ...rest) {console.log(a a);console.log(b b);console.log(rest); } rest参数只能写在最后前面用...标识从运行结果可知传入的参数先绑定a、b多余的参数以数组形式交给变量rest所以不再需要arguments我们就获取了全部参数。 如果传入的参数连正常定义的参数都没填满也不要紧rest参数会接收一个空数组注意不是undefined。 小心你的return语句 前面我们讲到了JavaScript引擎有一个在行末自动添加分号的机制这可能让你栽到return语句的一个大坑 function foo() {return { name: foo }; }foo(); // { name: foo } 如果把return语句拆成两行 function foo() {return{ name: foo }; }foo(); // undefined 要小心了由于JavaScript引擎在行末自动添加分号的机制上面的代码实际上变成了 function foo() {return; // 自动添加了分号相当于return undefined;{ name: foo }; // 这行语句已经没法执行到了} 所以正确的多行写法是 function foo() {return { // 这里不会自动加分号因为{表示语句尚未结束name: foo}; } 全局作用域 不在任何函数内定义的变量就具有全局作用域。实际上JavaScript默认有一个全局对象window全局作用域的变量实际上被绑定到window的一个属性 var course Learn JavaScript; alert(course); // Learn JavaScript alert(window.course); // Learn JavaScript 因此直接访问全局变量course和访问window.course是完全一样的。 你可能猜到了由于函数定义有两种方式以变量方式var foo function () {}定义的函数实际上也是一个全局变量因此顶层函数的定义也被视为一个全局变量并绑定到window对象 use strict;function foo() {alert(foo); } foo(); // 直接调用foo() window.foo(); // 通过window.foo()调用 进一步大胆地猜测我们每次直接调用的alert()函数其实也是window的一个变量 window.alert(调用window.alert()); // 把alert保存到另一个变量: var old_alert window.alert; // 给alert赋一个新函数: window.alert function () {} // 恢复alert: window.alert old_alert; alert(又可以用alert()了!); 这说明JavaScript实际上只有一个全局作用域。任何变量函数也视为变量如果没有在当前函数作用域中找到就会继续往上查找最后如果在全局作用域中也没有找到则报ReferenceError错误。  变量作用域 在JavaScript中用var申明的变量实际上是有作用域的。 如果一个变量在函数体内部申明则该变量的作用域为整个函数体在函数体外不可引用该变量 use strict;function foo() {var x 1;x x 1; }x x 2; // ReferenceError! 无法在函数体外引用变量x 如果两个不同的函数各自申明了同一个变量那么该变量只在各自的函数体内起作用。换句话说不同函数内部的同名变量互相独立互不影响 use strict;function foo() {var x 1;x x 1; }function bar() {var x A;x x B; } 由于JavaScript的函数可以嵌套此时内部函数可以访问外部函数定义的变量反过来则不行 use strict;function foo() {var x 1;function bar() {var y x 1; // bar可以访问foo的变量x!}var z y 1; // ReferenceError! foo不可以访问bar的变量y!} 如果内部函数和外部函数的变量名重名怎么办 use strict;function foo() {var x 1; function bar() {var x A;alert(x in bar() x); // A}alert(x in foo() x); // 1bar(); } 这说明JavaScript的函数在查找变量时从自身函数定义开始从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量则内部函数的变量将“屏蔽”外部函数的变量。 变量提升 JavaScript的函数定义有个特点它会先扫描整个函数体的语句把所有申明的变量“提升”到函数顶部 use strict;function foo() {var x Hello, y;alert(x);var y Bob; }foo(); 虽然是strict模式但语句var x Hello, y;并不报错原因是变量y在稍后申明了。但是alert显示Hello, undefined说明变量y的值为undefined。这正是因为JavaScript引擎自动提升了变量y的声明但不会提升变量y的赋值。 对于上述foo()函数JavaScript引擎看到的代码相当于 function foo() {var y; // 提升变量y的申明var x Hello, y;alert(x);y Bob; } 由于JavaScript的这一怪异的“特性”我们在函数内部定义变量时请严格遵守“在函数内部首先申明所有变量”这一规则。最常见的做法是用一个var申明函数内部用到的所有变量 function foo() {varx 1, // x初始化为1y x 1, // y初始化为2z, i; // z和i为undefined// 其他语句:for (i0; i100; i) {...} } 全局作用域 不在任何函数内定义的变量就具有全局作用域。实际上JavaScript默认有一个全局对象window全局作用域的变量实际上被绑定到window的一个属性 use strict;var course Learn JavaScript; alert(course); // Learn JavaScript alert(window.course); // Learn JavaScript 因此直接访问全局变量course和访问window.course是完全一样的。 你可能猜到了由于函数定义有两种方式以变量方式var foo function () {}定义的函数实际上也是一个全局变量因此顶层函数的定义也被视为一个全局变量并绑定到window对象 function foo() {alert(foo); } foo(); // 直接调用foo() window.foo(); // 通过window.foo()调用 进一步大胆地猜测我们每次直接调用的alert()函数其实也是window的一个变量 window.alert(调用window.alert()); // 把alert保存到另一个变量: var old_alert window.alert; // 给alert赋一个新函数: window.alert function () {} // 恢复alert: window.alert old_alert; alert(又可以用alert()了!); 这说明JavaScript实际上只有一个全局作用域。任何变量函数也视为变量如果没有在当前函数作用域中找到就会继续往上查找最后如果在全局作用域中也没有找到则报ReferenceError错误。 名字空间 全局变量会绑定到window上不同的JavaScript文件如果使用了相同的全局变量或者定义了相同名字的顶层函数都会造成命名冲突并且很难被发现。 减少冲突的一个方法是把自己的所有变量和函数全部绑定到一个全局变量中。例如 // 唯一的全局变量MYAPP: var MYAPP {}; // 其他变量: MYAPP.name myapp; MYAPP.version 1.0;// 其他函数: MYAPP.foo function () {return foo; }; 把自己的代码全部放入唯一的名字空间MYAPP中会大大减少全局变量冲突的可能。 许多著名的JavaScript库都是这么干的jQueryYUIunderscore等等。 局部作用域 由于JavaScript的变量作用域实际上是函数内部我们在for循环等语句块中是无法定义具有局部作用域的变量的 function foo() {for (var i0; i100; i) { //}i 100; // 仍然可以引用变量i } 为了解决块级作用域ES6引入了新的关键字let用let替代var可以申明一个块级作用域的变量 function foo() {var sum 0;for (let i0; i100; i) {sum i;}i 1; // SyntaxError } 常量 由于var和let申明的是变量如果要申明一个常量 const PI 3.14; 方法 var xiaoming {name: 小明,birth: 1990,age: function () {var y new Date().getFullYear();return y - this.birth;} }; xiaoming.age; // function xiaoming.age() xiaoming.age(); // 今年调用是25,明年调用就变成26了 绑定到对象上的函数称为方法和普通函数也没啥区别但是它在内部使用了一个this关键字这个东东是什么 在一个方法内部this是一个特殊变量它始终指向当前对象也就是xiaoming这个变量。所以this.birth可以拿到xiaoming的birth属性。 More:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014345005399057070809cfaa347dfb7207900cfd116fb000      转载于:https://www.cnblogs.com/284628487a/p/5548431.html
http://wiki.neutronadmin.com/news/372046/

相关文章:

  • 做企业的网站都要准备什么东西个性个人网站
  • 南京华璋建设网站wordpress中front-page
  • 影响网站收录的因数如何实现网站的快速排名
  • 合肥百度团购网站建设网站打开是404错误
  • 西部数码网站源码在海南注册公司需要什么条件
  • 做网站推广 优帮云网站建立计划书
  • 网站开发虚拟电话如何做网络推广推广
  • 济南官方网站坪山网站建设哪家效益快
  • 做背景视频哪个网站好导航去浙江省肿瘤医院
  • 基于html的网站开发中山网站建设 骏域
  • 前台网站开发技术网站制作公司珠海
  • 网站运营和维护莱芜在线最新消息
  • 网站备案需要哪些东西策划对于企业网站建设来说
  • 网站建设 济南微信公众号排版编辑器
  • 福建微网站建设开锁行业在58做网站有活吗
  • 展示型建站模板平台企业网站的建设对于网络品牌的塑造作用
  • 五常市网站如何建立自己的网站步骤
  • 江苏外贸网站建设WordPress四栏主题
  • 纯免费建站做网站前端后台
  • 潮州住房和城乡建设局网站泰兴网页定制
  • 网站的推广平台门窗网页设计制作
  • 什么样的网站好优化汕头e京网
  • 做内贸的电子商务网站典型有做一个微信小程序游戏需要多少钱
  • 中小学网站建设规范深圳服装设计公司排名前十强
  • 网站开发按前端后端分解送菜网站制作
  • 论述市场营销对网站设计的影响小广告多的网站
  • 网站制作带优化苏州网站地址
  • 新网站一直不被收录广东商城网站建设
  • 企业网站开发外包公司金蝶云
  • 网站添加设置着陆页全屋定制十大公认品牌有哪些