发表于: 2020-04-09 21:07:32
0 1765
一、今天完成的事情
实参可以是任何值
/*
* 实参可以是任何值
*
* */
/*
* 练习
* 定义一个函数,判断一个数字是否是偶数,如果是则返回true,否则返回false
* */
//方法一
// function isOu(num) {
// if (num % 2 == 0) {
// return true;
// }else {
// return false;
// }
// }
// var result = isOu(10);
// console.log("result = " + result);
//方法二
function isOu(num) {
return num % 2 == 0;
}
var result = isOu(2);
console.log("result = " + result);
/*
* 练习
* 定义一个函数,可以根据半径计算一个圆的面积,并返回计算结果
* 圆的面积:3.14*r*r
* */
function mianji(r) {
return 3.14*r*r;
}
var result1 = mianji(1);
console.log("mianji = " + result1);
/*
* 创建一个函数,可以在控制台输出一个人的信息
* 可以输出人的name age gender address
*
* 实参可以是任意的数据类型,也可以是一个对象
* 当我们参数过多时,可以将参数封装到一个对象中,然后通过对象传递
* */
function sayHello(o) {
// 将对象引入形参实参,这样在输出的时候,o 就想当于是obj ,然后o.name就相当于是obj.name,所以顺序就不会出错了
console.log("我是"+ o.name + ", 今年我" + o.age + "岁,我是一个" + o.gender + "人,我住在" + o.address)
}
// var man = sayHello("tom",18,"男","中国")
// console.log(man);
//创建一个对象
var obj = {
name :"孙悟空",
age :18,
gender:"男",
address:"中国"
};
sayHello(obj);
/*
* 实参可以是一个对象,也可以是一个函数
* */
function fun(a) {
console.log("a = " + a);
}
fun(mianji);
/*
* mianji ()
* - 调用函数
* - 相当于函数的返回值
* mianji
* - 函数对象
* - 相当于直接使用函数对象
* */
返回值的类型
/*
*返回值的类型
*
* */
function func() {
alert("函数要执行了");
for (var i = 0 ; i < 5 ; i ++){
if (i == 2){
//使用break 可以退出当前的循环;
// break;
//continue 用于跳过当次循环
continue;
//使用return 可以结束整个函数,后面的都不再执行
// return;
}
console.log(i);
}
alert("函数执行完了");
}
func();
/*
* 返回值可以是任意的数据类型
* 也可以是一个对象,也可以是一个函数
* */
function funct() {
return 10;
}
var a = funct();
console.log("a = " + a);
立即执行函数:
//函数对象()
/*
* 立即执行函数
*
* 函数定义完,立即被使用,这种函数叫做立即执行函数
* 立即执行函数往往只会执行一次
* */
(function() {
alert("我是一个函数");
})();
(function (x,y) {
console.log("x = " + x);
console.log("y = " + y);
})(123,456);
补充对象的知识
方法
//创建一个对象
var abc = new Object();
//向对象中添加属性
abc.name = "top";
abc.age = 10 ;
//对象的属性值可以是任何的数据类型,也可以是函数
abc.sayName = function () {
console.log(abc.name);
};
// console.log(abc.sayName);
// 调方法
abc.sayName();//这个abc 对象的sayName属性是一个函数,所以称为调用abc的sayName方法
//调函数
fun();
/*
* 函数也可以成为对象的属性
* 如果一个函数作为一个对象的属性保存
* 那么我们称这个函数是这个对象的方法
* 调用这个函数就说调用对象的方法(method)
*
* 但是他只是名称上的区别没有其他的区别
* */
document.write();//调用document 的write方法
枚举对象中的属性
/*
* 枚举对象中的属性
*
* */
//创建对象
//枚举对象中的属性
//使用for……in 语句
/*
* 语法
* for(var 变量 in 对象){
*
* }
*
* for…… in 语句 对象中有几个属性,循环就会执行几次
* 每次执行时,会将对象中属性的名字赋值给变量
* */
for (var n in abc){
console.log("属性名" + n);//对象中所有属性的名字赋值给变量 n ,然后 打印 n ,就得出所有的属性的名字了
console.log("属性值:"+abc[n]);//对象中每一个属性值都可以输出,我们可以根据属性名,找对应的属性值
}
作用域
/*
* 作用域
* - 作用域是值一个变量的作用的范围
* - 在JS 中一共有两种作用域
* 1.全局作用域
* - 直接编写在script标签中的JS代码,都在全局作用域
* - 全局作用域在页面打开时创建,在页面关闭时销毁
* - 在全局作用域中,有一个全局对象Window ,我们可以直接使用
* 它代表的是一个浏览器的窗口,它由浏览器创建,我们可以直接使用
* - 在全局作用域中,
* 创建的变量都会作为window对象的属性保存
* 创建的函数都会作为window对象的方法保存
* - 全局作用域中的变量都是全局变量
* 在页面的任意部分都可以访问的到
* 2.函数作用域
* - 调用函数时,创建函数作用域,函数执行完毕后,函数作用域销毁
* - 每调用一次函数,就会创建一个新的函数作用域,他们之间是相互独立的
* - 在函数作用域中可以访问到全局作用域的变量
* - 在全局作用域中无法访问到函数作用域中的变量
* - 当在函数作用域中操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用
* 没有则向上一级作用域中寻找,直到找到全局作用域
* 如果全局作用域依然 没有找到,则会报错
* - 在函数中要访问全局变量,可以使用window对象,直接找到
* - 在函数作用域中,也有声明提前的特性
* 使用var 关键字声明的变量 ,会在函数中所有的代码执行之前就被声明
* 函数声明也会在函数中所有的代码执行之前执行
* 在函数中不使用var声明的变量 都会成为全局变量
*
* 定义形参就相当于在函数作用域中声明了变量
*
*
* */
function fun() {
console.log("我是fun函数");//创建的函数都会作为window对象的方法保存
}
window.fun();
var b = 10 ;
console.log(window.b);//创建的变量都会作为window对象的属性保存,可以打印出来
var x = 10;
function fun4() {
var y = 10 ;
console.log("x = " + x);//在调用函数之后,输出x = 10
}
fun4();
console.log("y = " + y);//报错
变量的声明提前
/*
* 变量的声明提前
* - 使用 var 关键字声明的变量,会在所有代码执行之前被声明(但是不会赋值,等到执行到这一行的时候才会被赋值)
* 但是声明变量时不使用var 关键字,则变量不会被声明提前
*
* 函数的声明提前
* - 使用函数声明形式创建的函数: function 函数 (){ }
* 它会在所有的代码执行之前就被创建,所以我们可以在函数声明前调用函数
* - 使用函数表达式创建的函数,不会被提前声明,所以不能在函数声明前调用函数
* */
var c = 123 ;
console.log("c = " + c);
//函数声明,会被提前创建
function fun1() {
console.log("1321313213");
}
//函数表达式不会被提前创建
var fun2 = function () {
console.log(":515153541");
}
debug 没太懂 应该是一种调试方法
之后在学吧
this 是什么?
/*
* debug
*
* */
alert(d);
var a = 10;
var b = "hello";
c = true;
// function fun() {
// alert("hello");
// }
var d = 35;
/*
* this
* 解析器在调用函数每次都会向函数内部传递进一个隐含的参数
* 这个隐含的参数就是this
* this 指向的是一个对象,这个对象我们称为函数执行的上下文对象
* 根据函数的调用方式的不同,this会指向不同的对象,跟创建方式无关
* 1.以函数的形式调用时,this永远都是window
* 2.以方法的形式调用时,this 就是调用方法的那个对象
* */
function fun() {
alert("hello");
}
二、遇到的困难
debug
三、明天要做的事情
继续学习
四、收获
学习了基础的新知识
评论