Javascript基础语句和函数的练习
实例 <script> var thisis = 'javascript'; /* 变量的声明和赋值,建议遵循先声明后使用的原则; 变量声明应集中、置顶首字母必须为字母、下划线或$,不可以使用关键字和保留字, 变量长度不限,但区分大小写。 声明变量使用var let关键字,不使用关键字限定的变量默认是全局变量 */ var a; //声明变量,没有初始化之前,变量的初始值为undefined var b, c; var m = 1; let n = 1, d = 2; let e = g = 3; /* 表达式是可以运算,且必须返回一个确定值的式子,一般由常量、变量、运算符、子表达式构成 运算符:比如 +、—、*、/、=、|、delete、void等 一元运算符:++i、i--等; 二元运算符:结合两个操作数构成表达式,大部分运算符属于二元运算符:c = a+b; 三元运算符:结合三个操作数形成表达式,比如:condition ? a : b; 逗号运算符:依次计算两个操作数,并返回第二个操作数的值 void运算符:指定要计算一个表达式,比如: javascript:void(expression) */ var a = []; for (var i = 0, j = 10; i <= 10; i++, j--) { a[i, j] = i + j; document.writeln("a[" + i + "," + j + "]=" + a[i, j]); } /* 函数的定义: 1、使用function语句声明函数; 2、通过Function对象来构造函数 函数的返回值没有类型限制,可以是任意类型的值 */ // 命名函数 function f(name, say) { document.write('<h1>' + name + ': ' + say + '</h1>'); } //调用函数 f('西门老师', 'Hello!'); //匿名函数 var f = function(name, say) { document.write('<h1>' + name + ': ' + say + '</h1>'); } //调用函数 f('西门老师', 'Hello!'); //通过构造函数定义一个自定义函数 var f = new Function("name", "say", "document.write('<h1>' + name + ': ' + say + '</h1>');"); //调用函数 f('西门老师', 'Hello!'); /* JS中的输出,可以使用: 1、alert(); 阻塞进程的方式; 2、console; 不阻塞进程; */ alert("alert阻塞进程,你必须点击确定方可执行后面的操作"); console.log("写到控制台中,不阻塞进程"); var out = 25, inner = { out: 20, func: function() { var out = 30; return this.out; } } console.log((inner.func, inner.func)()); console.log(inner.func()); console.log((inner.func)()); console.log((inner.func = inner.func)()); var i = 0, j = 3, k = 5; console.log((i++, j++, k)); console.log(i); console.log(j); console.log(k); function value() { return 1; } var value; alert(typeof value); function value(x) { return x + 1; } var value; alert(value); var baz = 3; var bazz = { baz: 2, getbaz: function() { return this.baz; } } console.log(bazz.getbaz()); var g = bazz.getbaz; console.log(g()); var arr = [1, 2, 3, 4, 5]; for (var i = 0; i < arr.length; i++) { arr[i] = function() { alert(i); } } arr[3](); /* 未定义的值 和 定义了,但未赋值的 它们的默认类型都为 undefined; 尚未存在的对象,用null来表示,表示没有对象:该处不该有值,可以用作函数的参数,可以作为对象原型链的终点。 NaN是一种特殊的number prototype 是函数对象上预设的对象属性; this是JS的关键字,是函数运行时,自动生成的内部对象,只能在函数内部使用。指向调用函数的那个对象,谁调用,指向谁; */ // 比较以下两个函数的输出情况: var x = 1; function test() { alert(this.x); } test(); // 1 var z = 1; function ttest() { this.z = 0; } ttest(); alert(z); // 0 /* JS的特别之处是:函数内部可以直接访问外部的全局变量,而外部却不能访问函数内的局部变量 闭包:简单理解就是,可以读取其他函数内部变量的函数,它将函数内部和外部连接起来一座桥梁。 闭包的用途: 1、读取函数内部的变量; 2、让这些变量始终保持在内存中 使用闭包的注意事项: 1、闭包会使函数中变量常驻内存,滥用闭包会造成内存泄露,导致网页性能问题。所以,退出函数前,将不使用的局部变量全部释放是个解决办法; 2、闭包会改变父函数内部变量的值,当把闭包当做父函数的公用方法时一定要小心,不要随便改变父函数内部变量的值。 数组和对象的typeof都是 object,如何区分? 1、数组有length,而对象没有,所以,可以判断 typeof o.length == 'number'是否成立; 2、如果使用instanceof判断数据类型,一定要先判断数组,最后判断object,不然可能得到不准确的结果。 */ </script> 运行实例 » 点击 "运行实例" 按钮查看在线实例