Javascript学习笔记(一)

本文详细讲解了JavaScript的基础知识,包括输入输出语句(如alert、console和prompt),变量的使用与数据类型(如Number、Boolean、String等),运算符的优先级和转换,以及预解析的重要概念。通过实例演示了变量提升和函数提升的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.JS输入输出语句

方法说明
alter(msg)浏览器弹出警示框
console(msg)浏览器控制台打印输出消息
prompt(info)浏览器弹出输入框,用户可以输入,取得的值是字符型

二. JS中的变量

1.变量可以理解为是存放数据的盒子,通过变量名获取数据,修改数据。本质就是程序在内存中申请的一块用来存放数据的空间。
2. 变量的使用:var 变量名 = 值
3. 更新变量:一个变量被重复赋值之后,会覆盖之前的值,以最后一次赋值为准。

三. 数据类型

1.简单数据类型

简单数据类型说明
Number数字型,包含整型和浮点型
Boolean布尔值类型,true/false
String字符串类型,都带引号
Undefined声明了变量但是没有给值
Null声明了变量为空值

2.isNaN()来判断非数字,如果不是数字就返回true,否则返回false
3.字符串转义字符

转义符说明
\n换行符
\斜杠
单引号
“”双引号
\ttab缩进
\b空格

4.检测获取字符串的长度:length()
5.字符串的拼接:str1 + srt2 +…,只要有字符串类型,拼接后的结果都是字符串型,即数值相加,字符相连
6.获取数据类型:typeof 变量名
7.数据类型转换
1)转换为字符串

方式说明使用
toString()转成字符串变量.toString()
String()转成字符串String(变量)
加号拼接字符串和字符串拼接结果都是字符串\

2)转换成数值型

方式说明
parseInt(string) 函数将string类型转换成整数型
parseFloat(string)函数将string类型转换成浮点数型
Number()强制转换函数将string转换为数值型
js隐式转换(- * /)利用算数运算隐式转换为数值型

3)转换成布尔型:Boolean()

四. 运算符

1.全等和相等的区别:全等是值和数据类型都一样,相等只需要值相等。
2.运算符优先级

优先级运算符顺序
1小括号()
2一元运算符++ – !
3算术运算符先*/%后±
4关系运算符> >= < <=
5相等运算符!== === ==
6逻辑运算符先&& 后 ll
7赋值运算符=
8逗号运算符,

五.预解析(很重要)

1.原理:JS代码是由浏览器中的JS解释器来执行的,JS解释器在运行JS代码时分为两步:预解析和代码执行。
1)预解析:JS引擎会把JS里面所有的var和function提升到当前作用域的最前面
2)代码执行:按照代码书写的顺序从上往下执行
2.预解析分为变量预解析(变量提升)和函数预解析(函数提升)
1)变量提升就是把所有的变量声明提升到当前的作用域的最前面,但是不提升赋值操作

        //输出的值是undefined
        console.log(num);
        var num=10;
        //上面的两行代码相当于是下面的执行顺序,所以控制台输出的是undefined
        var num;
        console.log(num);
        num=10;

2)函数提升:把所有的函数声明提升到当前作用域的最前面,但是不调用函数

        //按照这样子写会报错
        fun();
        var fun=function(){
            console.log("Hello World!");
        }//这是一个函数表达式,进行调用必须写在函数表达式的下面
        //上面的代码进行解析后的执行顺序相当于是下面的,没有对fun()进行声明当然会报错
        var fun;
        fun();
        fun=function(){
            console.log("Hello World!");
        }

        //还有另外一种情况:可以正常输出'Hello World!'
        fun();
        function fun(){
            console.log("Hello World!");
        }
        //这是因为进行了函数解析后的执行顺序相当于是下面的,所以可以正常输出
        function fun(){
            console.log("Hello World!");
        }
        fun();

案例1:结果是多少?

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

进行预解析之后的代码执行顺序是下面的,得到的结果显然是undefined

var num;//全局提取
function fun() {
  var num;//局部提取
  console.log(num); //undefined
  num = 20;
}
num = 10;
fun();

案例2:

f1();
        console.log(c);
        console.log(b);
        console.log(a);

        function f1() {
            var a = b = c = 9;
            console.log(c);
            console.log(b);
            console.log(a);
        }
         //相当于:
        function f1() {
            var a;
            a = 9;
            b = 9;
            c = 9;
            //这里的意思是var a=9;b=9;c=9;注意是分号
            //直接赋值而没有声明,当作全局变量来看
            console.log(c);//9
            console.log(b);//9
            console.log(a);//9
        }
        f1();
        console.log(c);//9  全局变量
        console.log(b);//9  全局变量
        console.log(a);//a is not defined 报错  局部变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值