一些应该掌握的知识点
五种基本值类型:Number,String,Boolean,null,undefined;复杂数据类型:Object
原始值是不可改变的,是栈数据(栈,先进后出,后进先出)
值类型,把值传递给另一个变量(赋值),相当于分配了一块新的内存空间
String类型的特殊性:因为字符串大小可变,所以不能被存储在具有固定大小的变量中。且JS只复制对字符串的引用,而不是字符串的内容。但字符串不可变,因此String是行为与基本类型相似的不可变引用类型。(注:原始值是不可变的,任何方法都不能改变原始值内容,像String的方法,只能返回新的字符串,而不能修改原始字符串)
引用类型,相当于让指针指向另一变量,拥有同一块内存空间,eg.Object,Array,Function
引用值是堆数据(堆,先进先出,后进后出)
关于undefined,null,NaN
- 未定义的值和定义未赋值的为undefined
- null是一种特殊的object
- NaN是一种特殊的number
- 关于null与undefined区别的一篇博客参考:JS中Null与Undefined的区别
JS语句的两个基本规则
- 语句后面要用分号’;’结束
- JS语法错误会引发后续代码终止,但不会影响其他JS代码块
用一个变量去操作一个数字的时候,最多只能操作小数点前16位,和小数点后17位
加号’+’可以进行数学运算和字符串连接,任何数据类型加字符串都等于字符串
右加加(减减):先参与运算,操作符本身再+1;左加加(减减):操作符先自+1,再参与运算
会被认定为false的值:undefined, null, NaN, ”, false
逻辑与’&&’还有一个功能,假设a = b && c, 假设b的值为真,则直接把c的值赋给a
for (1;2;3){},执行1, 判断2,真则执行{},再执行3,判断2
所键盘上有字符都是一个字节;若当前字符位的unicode大于255,那么该字节符长度为2,否则该字节符长度为1
一些简单的代码示例:设定a,b两变量并分别赋值,再把a,b两值互相调换
方法一
var a = 123;//创建变量并赋值 var b = 234; var c; c = a;//把a赋值给c a = b; b = c;
方法二
var a = 123; var b = 234; var c; a = a + b;//把a+b的值赋给a b = a - b; a = a - b;
“==”与”===”的区别
- ”==”称作相等运算符,用它检测两个操作数是否相等,允许进行类型转换
- “===”称为严格相等运算符,用它检测两个操作数是否严格相等
一个if条件语句示例
var num = parseInt(window.prompt());
if (num >= 90) { //圆括号'()'内设定条件,如成立则执行大括号'{}'语句
document.write('<b><i>日薪百万</i></b>');//在window窗口显示相关内容,并对文本内容加粗加斜
}else if (num < 90 && num >= 80) {//若if语句条件不成立,则执行else if语句
document.write('<b><i>周薪百万</i></b>');
}else if (num >= 70) {
document.write('<b><i>月薪百万</i></b>');
}else if (num >= 60) {
document.write('<b><i>年薪百万</i></b>');
}else {//若其他条件皆不成立,则执行该语句
document.write('<b><i>你就是个菜逼</i></b>');
}
- 一个switch条件语句示例
var n = window.prompt('选择逃课的时长,请输入数字1~7');
switch (n) { //设置表达式,并判断与下列case语句中哪一个case匹配
case '1':
document.write('一节课');
break; //执行完本条case语句后停止执行下一个case
case '2':
document.write('半天');
break;
case '3':
document.write('一天');
break;
case '4':
document.write('一周');
break;
case '5':
document.write('一个月');
break;
case '6':
document.write('一学期');
continue; //停止执行该条语句并执行下一个case
case '7':
document.write('一学年');
break;
default: //当所有的case都不匹配时默认执行该语句
document.write('你还是退学吧')
};
- 一个for循环语句示例
var count = 0;
var times = 0;
for (var i = 0; i<100;) { /*在圆括号"()"中创建变量i并赋予初值0,然后判断是否满足条件i<100,
如满足则开始执行大括号"{}"中的语句,执行完成后再次判断是否满足
条件i<100 */
count += i++; //完成一次count=count+i后,i再自加一
times++;
if (count >= 300) {
i = 100;
document.write(times);
document.write('<br>')
document.write(count)
}
}
- do…while语句用法(注:do…wihile语句是循环语句的变体)
do {}while () {} /*在检查while()条件是否为真之前,该循环首先会执行一次do{}之内的语句,然后
在while()内检查条件是否为真,如果条件为真的话,就会重复do...while
这个循环,直至while()为假 */
一些练习
- 计算2的N次幂
var n = parseInt(window.prompt('计算2的N次幂,请输入N的值')); /* 声明一个变量n,在window
窗口的弹窗中输入一个整型,
并赋值给n */
var m = 1;
var i;
if (n >= 0) {
for (i = 0; i < n; i++) {
m = m * 2;
}
}else {
for (i = 0; i > n; i--) {
m = m * (-2);
}
}
document.write('2的',n,'次幂为',m,'<br>');//在window窗口中输出语句"2的n次幂为m"并折行
- 计算N阶乘
var n = parseInt(window.prompt('计算N的阶乘,请输入N的值'));
var m = n;
if (n > 0) {
for (i = 1; i < m; i++) {
n = n * (m - i);
}
document.write(m,'的阶乘为',n,'<br>');
}else {
document.write('不能输入小于或等于0的数','<br>');
}
- 计算斐波那契数列的第N项
var n = parseInt(window.prompt('你需要斐波那契数列的第几项?,请输入N值'));
var m = 1;
var a = 1, b = 1;
if (n > 0) {
for (var i = 1; i < n - 1; i++) {
var m = a + b;
a = b;
b = m;
}
document.write('斐波那契数列的第',n,'项为',m,'<br>');
}else {
document.write('不能输入小于或等于0的数','<br>');
}
- 输入一个三位数,对输入值反向输出
var n = parseInt(window.prompt('请输入一个个位数不为零的三位正整数'))
var c;
var a = n % 10;
var b = (n - a) % 100;
c = (n - a - b) / 100;
if (n > 100 && a != 0) {
var m = a * 100 + b + c;
document.write('数值',n,'的反向输出为',m,'<br>');
}else {
document.write('出错','<br>')
}
- 输入三个数,并输出其中的最大值
alert('a,b,c三数比较大小')
var a = parseFloat(window.prompt('a,b,c三数比较大小,请输入a的值'));
var b = parseFloat(window.prompt('a,b,c三数比较大小,请输入b的值'));
var c = parseFloat(window.prompt('a,b,c三数比较大小,请输入c的值'));
var n = a;
if (a < b && b > c) {
n = b;
}else if (a < c) {
n = c;
}
document.write('a,b,c中的最大值为',n,'<br>');
- 给定任意正整数N,取0到正整数N之间的质数
var n = parseInt(window.prompt('取零到正整数N之间的质数'));
document.write('0到',n,'之间的质数为');
for (var i = 1; i <= n; i++) {
var m = 0;
for (var a = 1; a <= i; a++) {
if (i % a == 0) {
m++;
}
}
if(m == 2) {
document.write(i + ' ');
}
}
document.write('<br>');
- 用”typeof”判断一些值类型
n = window.prompt('别乱按,我看着你呢!')
switch (n) {
case '1': alert(typeof(a));break;
case '2': alert(typeof(undefined));break;
case '3': alert(typeof(NaN));break;
case '4': alert(typeof(null));break;
case '5': var a = '123abc';alert(typeof(+a));break;
case '6': alert(typeof(!!a));break;
case '7': alert(typeof(a + ''));break;
case '8': alert(1 == '1');break;
case '9': alert(NaN == NaN);break;
case '10': alert(parseInt('123abc'));break;
case '11': var num = 123123.3545789; alert(num.toFixed(3));break;
default: alert('你再瞎按试试?瞧我不弄死你!');
};