JavaScript_02

本文介绍了JavaScript中的变量声明、基本语法、数据类型(原始值和引用值)、运算操作符以及面试中可能涉及的深度和广度问题。作者强调理解和掌握问题本质的重要性,并提供了学习资源链接。
摘要由CSDN通过智能技术生成
  • 变量声明
    1)声明、赋值分解
    var a; 这个叫变量声明。我们向系统中申请了 var 这个框,命名叫 a 给 a 赋值 100,写作 a =100,这里不是等号是赋值的意思。
    var a ; a =100;可以简化写成 var a=100;
    2)单一 var 声明法
    var a,b,c,d;————>单一 var 模式
    在这里插入图片描述3)命名规则——起变量名一定要以英文语义化,见名知意。
    1.变量名必须以英文字母,_$ 开头
    2.变量名可以包括英文字母、_$、数字
    3.不可以用系统的关键字、保留字作为变量名。
    在这里插入图片描述

基本语法

  • js 是动态语言,动态语言基本上都是解释性语言,解释性语言基本上都是脚本语言。js 是浮点型语言(带小数点)。
  • 值类型(数据类型)
  1. 不可改变的原始值(栈数据)栈 stack
    Number,String,Boolean,undefined,null
    已经放进去的值不可改变,只会改房间编号为 null(硬盘原理)
  • Number 数字,例 var a = 123;
  • String 字符串,语言放双引号里,例 var a=”语言”,““是空串
  • Boolean 布尔数字,就两个值,false,true
  • undefined 是没有定义的,表示还没赋值,仅一个值 underfined
  • null 代表空,占位用,用空值来覆盖
    var a =10;
    var b = a;
    a = 20;
    document.write(b);
    答案:10
    原始值是我把一个值放到另一个值里面,改了第一个值,第二个值不变。
  1. 引用值(堆数据)大致上放堆 heap 里面
  • array 数组, Object, function … data,RegExp 正则
    var arr = [1,2,3,4,5,false,”abc”]; //这是数组
    例:var arr = [1];
    var arr1 = arr;
    arr.push(2);
    document.write(arr1);
    答案:arr 是 1,2。arr1 是 1,2
    引用值是把第一个值放到第二个值里面,改第一个值,第二个值也改变。
    补充:js 由值决定类型。原始值和引用值唯一的不同是赋值形式不同
    在这里插入图片描述var a = 10;var b =a;是 a 先取出 10,copy 一份放到 b 里面,改变 a 的值,b 的值是不
    变的,再把 a=20;时 b 的值还是 10,不发生改变
  • var arr = [1,2]; var arr1 =arr; arr.push(3);
    答案:这往[1,2]放 3,arr 和 arr1 都是[1,2,3]
    引用值是在栈内存里面放堆的地址,拷贝的也是地址,所以改变 arr,arr1 也变了。
  • var arr = [1,2]; var arr1 =arr; arr = [1,3]; document.write(arr1);
    答案:arr = [1,3];是新建了一个新的房间。arr1 是 1,2,现在是插入新引入值”房间”,
    会在堆里面重新申请一间房,并指向新房间。
  • js 语句基本规则
  1. 语句后面要用分号结束“”但 function test(){}for(){}if(){}后面都不用加分号
  2. js 语法错误会引发后续代码终止,但不会影响其它 js 代码块
    错误分为两种:
    1)低级错误(语法解析错误),不能写中文
    2)逻辑错误(标准错误,情有可原,错的那个执行不了)
  3. 书写格式要规范,“= + / -”两边都应该有空格

js运算符

一、运算操作符
+

  1. +”作用:数学运算、字符串链接
  2. 任何数据类型加字符串都等于字符串。
    例: var a = “a”+ true + 1; //打印 atrue1
    例: var a = 1 + “a” + 1 + 1; //打印 1a11
    例: var a = 1 + 1 + “a” + 1 + 1; //打印 2a11,从左向右运算
    例: var a = 1 + 1 + “a” +( 1 + 2); //打印 2a3

- \* /
例: var a = 0 – 1; //等于-1
var a = 2 * 1; //等于 2
var a = 0 / 0; //答案是 NaN,应该得出一个数字类型的数,但是没法表达,就用 NaN (NaN 是 Not a Number 非数,不是数,但是是数字类型)
var a = 1 / 0; //是 infinity
var a = -1 / 0; //是-infinity

%:摩尔,模,是取余数的意思。
var a =5%2; //5%2 是五除二的余数,商二余一
var a =5%1; //是五除一的余数,结果是 0
var num = 1 % 5; //意思是 1 除以 5 的余数。商 0 余 1
var a =4%6 ;//是四除六的余数,结果是 4
var a = 4; a % = 5; document.write(a); // 4
var a = 0; a % = 5; document.write(a); //0
var a = 10; a %= 2; document.write(a);//0
var a = 3; a % = 4; //4
-”,“*”,“/“,“%”,”=“,“()
优先级:”=“最弱【赋值符号优先级最低】,”()”优先级较高
“++”,“- -”,”+=“,“-=”,“/=“,“*=”,“%=”
++
var a = 10; a = a + 1; //结果 11
var a = 1;
a = a + 1;写成 a ++是一种简化形式“++”,是自身加一,再赋值给自身,a++是 a=a+1 的简化形式。
var a =10; document.write(++a ); document.write(a); //答案 11;11
是先执行++,再执行本条语句 document.write(++a)
var a =1; document.write(a ++); document.write(a); //答案 1;2。是先执行
语句(document.write(a)),再++,所以第一次打印的还是 a,第二次打印 a++后的值。
var a =10; var b=++a -1+a++; document.write(b + “ ” + a) //答案 21 12
先++a,这个时候 a=11,再-1,再加 a,b 就是 21,最后++,a 就是 12
赋值的顺序自右向左,计算的顺序自左向右(按数学来)。
var a =1; var b = a ++ + 1; document.write(b); //答案 2,先执行 var b =a+1, 再 a++
var a =1; var b = a ++ + 1; document.write(a); document.write(b); //答案 2,2
var a =1; var b = ++a + 1; document.write(a); document.write(b); //答案 2,3
var i = 1; var a = i++; //答案 a = 1; 此时 i 先将值 1 赋给 a,然后自己+1,i=2;
var b = ++i; //答案 b = 3;此时 i 先自己+1 为 3.再给 b 赋值,b=3;

- -:“- -”,是自身减一,在赋值给自身
var a = 1; var b = a-- + -- a; document.write(b); //答案 0,先执行–a;此时 a 变成0,然后第一个 a 也变成 0,那么 b = 0-- + --a
var a = 1; var b = --a + --a; document.write(b); //答案-1
var a = 1; document.write(a++); document.write(a); //答案 1;2
var a =1; document.write(++a); document.write(a); //答案 2;2
var a =1; var b = a ++ +1; document.write(b); //答案 2 a 写在后面就后运行,先计算 a+1=2 赋值给 b 后再++
var a = 1; var b= ++a + 1; document.write(a); document.write(b); //答案 2;3

+= -=
var a =10; a ++; a ++; a ++;加十个。简化写法:a +=10;也是 a = a+10;
var a =10; a += 10 + 1; //答案 21
var a = 1; a = a + 10;等于 a+=10。a++是 a +=1 的写法

/=
var a=10; a/=2; //答案 5,是除二赋给自身的意思

\*=
var a =10; a *=2; //答案:20,是乘二赋给自身的意思
%=

总结

大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值