批改状态:合格
老师批语:变量的声明与作用域相关, 要留意
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>
运行实例 »
点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号