这周开启了js的学习路程,因为有了之前c的基础,js学起来基本没有费多大力气,概念都很好理解,但两种语言对比下来总体感觉js很自由,在使用方面上真的很方便。
使用方面:
1.自由的变量类型
c里面的变量整型就是整型,字符型就是字符型,一旦确定就无法改变了,但在js中变量在后续使用中是可以改变其数据类型的
此外,只要加上引号,数字也可以是字符型,下图的输出结果便是11。
2. 自由的变量定义
在js中,你可以在for、if等常用函数中定义函数
也可以在输出语句中写上输入语句:
让我觉得最神奇的还是可以在自定义函数中继续定义函数:
3.自由的数组元素
js中的数组元素可以任意类型的,这真是太神奇了:
知识点:
1:伪数组arguments
在c中函数是实参传递中如果实参数量大于形参会直接报错,但在js中不会,并且可以用arguments这个伪数组来查看传递的所有实参
至于为什么叫它伪数组:
-
每一个函数中都内置好了arguments
-
不是真的意义上的数组,不能使用:pop( ) ; push( )等
-
具有数组length的属性
2.预解析
js引擎执行指令分两步:先是预解析,将所有的var 和 function提前到作用域最前面,相当于告诉浏览器这段代码总共有哪些代码;然后才是执行指令
<script>
//先调用变量,再定义
console.log(a);
var a=1;
//结果是undefind,因为预处理把var a;提前了,然后执行指令调用未赋值的a,是为赋值的变量
//直接调用
// console.log(b);
//报错,,因为变量压根没定义
//同第一个
hanshu();
function hanshu(){
console.log(10);
}
hanshu();
//
// hanshu1(); 这样会报错,因为预处理只是将函数声明提前,没有提前函数定义
var hanshu1=function(){
console.log(20);
}
hanshu1(); //这样就可以执行了
var x=1;
function shuchu(){
console.log(x);
//尽管外面已经对x进行了一次赋值,但这在函数里又进行了一次定义赋值,引擎进行了一次预处理但未赋值,所以第一个console是undefind
var x=20;
console.log(x);
}
shuchu();
</script>
这一周的话学习的就这么多了,最后附上整篇代码
<script>
/*字符串连接*/
// var a,b,c;
// a=1;b='1';
// c=a+b;
// console.log(c);
/*输出套输入*/
// var a;
// alert(prompt(a));
/*循环定义变量*/
// for(var i=0,a=[];i<10;i++){
// a[i]=i;
// }
// console.log(a);
/*判断定义循环*/
// if(1<2){
// var b=1;
// console.log('b='+b);
// }
/*自由的数组元素*/
// var a=[1,'字符',true,null,undefined];
// for(var i=0;i<a.length;i++)
// {
// console.log(a[i]);
// }
/*arguments使用*/
// function canshu(y1,y2){
// console.log(y1,y2);
// console.log(arguments);
// }
// canshu('x1','x2','x3')
</script>