JavaScript-day2
函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>js函数</title>
<script>
//函数式js中的最小功能单位
//创建函数
function add(num1, num2) {
return num1 + num2;
}
console.log(add(1, 2));
//意外来了
console.log(add(1, 2, 3));//不报错,而且调用函数啦。。执行的是前两个参数。
//实参可以和形参参数不匹配,说明JavaScript的函数参数列表不可以作为鉴别不同方法的特征。。。只能函数名区分
console.log(add());//结果为NAN..如果实参小于形参,那就是未传递的形参就是undefined。。任何数字+undefined都是NAN
/* 内置对象: */
//运行js代码的时候,由运行环境已经创建好的一些对象。。。我们可以直接使用
//获取函数的实参个数
function add2(num3, num4) {
console.info(arguments);//arguments类似于java的可变形参列表。在js中可以当成一个数组来使用。。。(伪数组)
//比较arguments是不是一个数组
console.info([1, 3, 5] instanceof Array);//instanceof 对复杂数据类型做所属判断用的,和java一致、
console.info(arguments instanceof Array);//false。。他不是一个数组。使用方式类似于数组
console.log("===========arguments,不是数组,却是可以和数组一样的遍历方式==============")
//arguments不具有数组的 push , pop 等方法
var element = 0;
for (let index = 0; index < arguments.length; index++) {
element += arguments[index];
}
console.log(element);
return num3 + num4;
}
add2(123, 3243, 345643645, 657567, 75345353, 234);
//匿名函数
var temp = function (x1, x2) {
return x2 - x1;
}
//可以这样调用
console.log(typeof temp(55, 11));//结果是number
console.log(typeof temp);//function
console.log(temp(55, 11));//-44
//匿名函数调用方式二:自执行
var temx = (function (x1, x2) {
return x2 - x1;
})(1, 5);
//函数体().....
console.log(temx);
//函数作为参数传递进去:函数作为参数和返回值
function cal(func1, numb1, numb2) {
return func1(numb1, numb2);
}
function funcadd(number1, number2) {
return number1 + number2;
}
var result = cal(funcadd, 1, 21);
//除零是无穷大:
(function (numx, numy) {
console.log(numx / numy);
})(1, 0);//Infinity
//函数嵌套
function distance(x1, y1, x2, y2) {
function square(x) {
return x * x;
}
return Math.sqrt(square(x1 - x2) + square(y1 - y2));
}
var result1 = distance(0, 0, 3, 4);
//外层函数不能调用:函数内层函数。。。
// console.log(square(1));报错。。。。。
console.log(result1); // 5
function swtic(op, numxx, numyy) {
switch (op) {
case '+': return numxx + numyy;
case '-': return numxx - numyy;
case '*': return numxx * numyy;
case '/': return numxx / numyy;
}
}
</script>
</head>
<body>
<!-- js函数 -->
</body>
</html>
对象:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>作用域</title>
<script>
/* 全局作用域||局部作用域 */
var age = 10;//这就是全局作用域
//局部作用域
function abc() {
var age1 = 11;//局部作用域
}
// console.log(age1);//会报错的。。未声明错误。。。。。
//。注意局部作用域:是在函数内部。。其他的代码块中默认是全局作用域。
if (true) {
var able = "Hello World";
} else {
var able = "网吧我来了";
}
console.log(able);//没问题不报错。。。这不是方法内部(function)的,所以就是全局的作用域。外部可以访问得到。
var sum = 0;
//js没有块及作用域
for (var index = 0; index < 5; index++) {
sum += index;
}
console.log(sum + ":" + index);//for块里面的变量index,在外部可以访问得到,说明js没有块级作用域。。
//全局变量都是挂载在Window对象上面的(window是js里面的顶级对象。。。)
var a1 = 1;
window.a2 = 20;
console.log(window.a1)//这可以访问
console.log(a2)//这样可以访问。。。
//说明,默认全局是挂载到window对象上面的,还有就是window对象属性(方法)访问不需要对象.属性名。
name = "郭童";//这句话是赋值,不是声明,因为window对象上面有这个变量,原window对象上的name属性是“”;
console.log(name);//一样的:郭童
console.log(window.name);//是一样的:郭童
testx = "gt0";//这句话是声明一个变量,并且给这个变量赋值,还有将这个变量挂载到window对象、
//原因是window对象本身没有带这个textx属性。
console.log(window)
//使用var关键字声明的变量才是真正的全局变量,没有使用var或者使用window.属性的方式声明的变量我们一般认为window对象的属性。
function fun() {
var next = 101;
netx1 = 101;
console.log(next);
}
fun();//调用方法
// console.log(next);//这里时机上打印的是window对象的next属性,所以这里打印不到var定义的局部变量,所以报错。
//当方法内部的,没有var声明。。。那就是window对象的属性,这时候不管你在函数内还是函数外都可以访问得到。
console.info(netx1);//成功:101
//变量搜索查找:就近原则。。。。从内向外,层层递进,找到为止。。。。
var xxx1 = 20;
function abcd() {
var xxx1 = 10;
function cndf() {
xxx1 = 5;
console.log(xxx1);
}
cndf();//5
}
abcd();//这里打印的是5.。但是变量原值是10,进入子方法重新赋值为5.。。
function f1() {
var num = 123;
function f2() {
console.log(num);
}
f2();
}
var num = 456;
f1();//打印的是123
//js预编译
console.log(roless)
var roless =10;//会预编译,先把变量声明提前。。但是不会赋值。。所以上一步是undefined。。
//这里会报错,变量未定义声明。。。。
console.log(roless)
roless =10;
//function方法,会自动提升到当前作用域开头
//匿名方法,先调用,后定义,就会报错 not is function。。
//类似
funxxx()
function funxxx(){
console.log("hello world")
}
//报错。。。。。
funyyyy()
var funyyyy=function(){
console.log("hello world")
}
console.log(window)
console.log(name)//这里打印::李四
name= "李四";//window本身属性,,:name。在代码执行之前就会执行初始化赋值(预编译)
//非window挂载的对象,n那么这时候不会去挂载到window对象。。那就不会提前声明与赋值。。会报错-->
</script>
</head>
<body>
<!-- 作用域 -->
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript对象</title>
<script>
//初始化创建对象:字面量创建方式一:
var Person = {
name: "GT",
age: 16,
salary: 1990,
say: function () {
console.log("Hello World");
console.log(this.age);//方法内部的this,指针指向当前作用域的对象本身。。
}
}
//全局作用域的this指向的是window对象。。
//使用
console.log(Person.age);
Person.say();
//对象:{key : value}
//所有的·key都是字符串类型。。。。。。。。
var MingRen = {
name: "鸣人",
sex: "男",
age: 19,
skile: function () {
console.log("影分身术") ;
}
}
var obj =new Object();
obj.name="鸣人";
obj.age=19;
obj.sex="男";
obj.skile=function(){
console.info("影分身术");
}
//第三种方法:构造器创建对象:
function thisObij(name,age){
this.name=name;
this.age=age;
this.say=function(){
console.log(111)
}
}
var tem = new thisObij("tom",14);
//遍历对象
for(var key in tem){
//key是字符串
console.log(tem[key]);
}
</script>
</head>
<body>
</body>
</html>
内置对象:

function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }


作者:隔壁老郭
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
Java入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
浙公网安备 33010602011771号