JS基础一【JS】

JS

1. Javascript 输入输出语句

  • alert(msg) 浏览器弹出警示框
  • console.log(msg) 浏览器控制台打印输出信息
  • prompt(info) 浏览器弹出输入框,用户可以输入

2. 变量 var 存储数据的容器

声明多个变量:var age = 18, name=‘zs’;

  • 只声明不赋值:undefined
  • 不声明不赋值,直接使用:报错
  • 不声明,直接赋值使用:可以使用 但不提倡

3. 数据类型

  • 只有在程序运行的过程中,根据等号右边的值来确定的,相同的变量可以作用不同的数据类型
  • isNaN() 用来判断 非数字
    如果是数字返回false, 如果不是数字返回true
  • undefined和数字相加,最后结果是NaN
  • typeof用来获取变量数据类型
  • prompt取来的值是字符型的

4.数据类型转换

  1. 转换为字符串
  • toString()
    var num = 10 console.log(num.toString())
  • String() 强制转换
    console.log(String(num))
  • 加号拼接字符
    console,log(num + ‘ ’)
  1. 转换为数字型(重点)
  • parseInt(string)函数
    转换成整数
  • parseFloat(变量)
    转换成小数
  • Number()
    转换成数值
  • 利用算数运算 - * / 隐式转换

5. 递增运算

  1. 前置递增(先加1,后返回值)
  2. 后置递增(先返回原值,后自加1)
    例1:var a = 10; ++a; var b = ++a + 2; console.log(b)//14
    例2:var c = 10; c++; var d = c++ + 2; console.log(d);//13
    例3:var e = 10; var f = e++ + ++e; console.log(f)//22

6. 逻辑运算符

  1. && 同真为真
  2. || 同假为假
  3. ! 非

7. 短路中断运算

  1. 逻辑与
    表达式1&&表达式2
    如果第一个表达式的值为真,则返回表达式2
    如果第一个表达式的值为假,则返回表达式1
  2. 逻辑或
    如果表达式1结果为真,则返回表达式1
    如果表达式1结果为假,则返回表达式2

8.运算符优先级

逻辑与比逻辑或的优先级高

9.switch分支语句

switch(表达式){
	case value1:
		执行语句1breakcase value2:
		执行语句2break;
		...
		default;
}

表达式的值和case里面的值相匹配的时候是全等,必须是值和数据类型一致才可以

10.continue和break

continue 退出本次循环,继续执行剩余次数循环
break 退出整个循环

11. 数组

找数组中最大值

var arr=[2,6,1,77,52,25,7];
var max=arr[0];
for(var i = 1; i < arr.length; i++){
	if(arr[i]>max){
		max = arr[i];
	}
}

12. 函数

  1. 带参的函数
    (1) 形参是接收实参的
function cook(aru){
	console.log(aru);
}
cook('我是张三')

(2)我们可以利用函数的参数实现函数重复不同的代码
(3)函数的参数可以有,也可以没有,个数不限
2. 函数形参和实参个数不匹配问题
(1)实参个数等于形参个数 (输出正确结果)
(2)实参个数大于形参个数(只取到形参个数)
(3)实参个数小于形参个数(多个形参定义为undefined,结果为NaN)
在JS中,形参默认为undefined
3. 函数的返回值
(1)函数是做某件事或者实现某种功能
(2)函数的返回格式

function 函数名(){
	return 需要返回的结果;
}
函数名();

(3)return只能返回一个值,如果用逗号隔开,则返回的是最后一个值
(4)函数如果有return,则返回return后面的值;如果没有return,则返回undefined
4. arguments的使用

当我们不确定有多少个参数传递的时候,可以用arguments来获取,在js中,arguments实际上它是当前函数的一个内置对象
arguments 对象中存储了传递的所有实参

function fn(){
	console.log(arguments);
}
fn();
  1. 伪数组(并不是真正意义上的数组)
    (1)具有数组的length属性
    (2)按照索引的方式进行存储
    (3)它没有真正数组的一些方法。如pop(),push()等。

13. 作用域

  1. 变量的作用域
    (1)全局变量:在全局作用域下的变量,在全局下都可以使用
var num = 10;//num 就是一个全局变量
console.log(num);
function fn(){
	console.log(num);
}
fn();

(2)局部变量:函数内部的变量

function fun(){
	var num1 = 10;//num1就是局部变量
}
fun();
console.log(num1);//这里会报错

注意: 函数的形参也可以看作是局部变量

(3)从执行效率来看全局变量和局部变量

  • 全局变量:在任何一个地方都可以使用,只有在浏览器关闭时才会被销毁,因此比较占内存。
  • 局部变量:只在函数内部使用,当其所在的代码块被执行时,会被初始化;当代码运行结束后,就会被销毁,因此更加节省空间。
  1. 作用域链(就近原则
var num = 10;
function fn(){//外部函数
	var num = 20;
		function fun(){//内部函数
			console.log(num);//20
		}
		fun();
	}
	fn();

内部函数访问外部函数的变量,采取的是链式查找的方式来决定取哪个值,这种结构我们称之为作用域链。

14.预解析

例1:console.log(num);//报错
例2:console.log(num); var num = 10; //undefined 坑1
例3:

fn();
function fn(){
	console.log(11);
}//11

例4:

fun();
var fun = function(){
	console.log(22);
}//报错 坑2	
  1. 我们把JS引擎运行js分为两步:预解析代码执行
    预解析: JS引擎会把js里面所有的var,还有function提升到当前作用域的最前面。
    代码执行: 按代码书写的顺序从上往下执行。
  2. 预解析分为变量预解析(变量提升)函数预解析(函数提升)
    (1)变量提升:就是把所有的变量声明提升到当前作用域最前面,不提升赋值操作
    例1:console.log(num); var num = 10;可以推导为:
var num;
comsole.log(num);
num = 10;//num未赋值 即为undefined

例2:fun(); var fun = function() { console.log(22); }可以推导为:

var fun;
fun();//报错
fun = function(){
	console.log(22);
}

(2)函数提升:把所有函数声明提升到当前作用域最前面,不调用函数
例1:

var num = 10;
fun();
function fun(){
	console.log(num);
	var num = 20;
}

可以推导为:

var num;
function fun(){
	var num;
	console.log(num);
	num = 20;
}
num = 10;
fun();//undefined

例2:

var num = 10;
function fn(){
	console.log(num);
	var num = 20;
	comsole.log(num);
}
fn();

可以推导为:

var num;
function fn(){
	var num;
	console.log(num);//undefined
	num = 20;
	console.log(num);//20
}
num = 10;
fn();

例3:

f1();
console.log(c);
console.log(b);
console.log(a);
function f1(){
	a = b = c = 9;
	console.log(a);
	console.log(b);
	console.log(c);
}

上面代码中var a = b = c = 9;相当于var a = 9; b = 9; c = 9;b和c直接赋值,没有var声明,当全局变量看。
若为集体声明,则应该是这样var a = 9, b = 9, c = 9;
上述代码可以推导为:

function f1(){
	var a;
	a = 9;
	b = 9;
	c = 9;
	console.log(a);//9
	console.log(b);//9
	console.log(c);//9
}
	f1();
	console.log(c);//9
	console.log(c);//9
	console.log(c);//报错,因为a为局部变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值