JavaScript基本语法笔记

变量

使用关键字var来定义变量,js的变量是弱类型,var不写也可以

var a = 0; a = "abcv"; a = true;a=3.15;

运算符

算术运算符

var a = 3170; b = a/1000*1000;
b = 3170 js是弱类型a/1000 不是等于3
"12"-1 = 11 js会将字符串转换再做运算不是字符串相加减
2%5 = 2;

  • js中fase是0或者null,非0非null就是true
  • ++问题

var n = 3,m; m = n++; n = 4;m =3;
var n = 3,m; m =++n; n = 4;m =4;

赋值运算符

= += -= /= %

比较运算符

< > == <= <= 运算的结果不是false就是true

逻辑运算符

! && || 用来连接两个Boolean的表达式, &是位运算符

alert(a>3 && b<8); true | false
alert(a > 3 & b < 8);1 | 0
alert(!t); false | true;   非0或非null取反

位运算符

& | ^ >> << >>> <<<

var c = 6;
alert(c&3);2 (相同为真)
110
011
010
alert(5^3^3);5(不同为真)
alert(6>>1);6除于2的1次方=3
alert(6<<2);6x2的2次方 = 24

三元运算符

? : 可以是ifelse的简写形式

其他

1.undefined 未定义,有变量没赋值,其实就是一个常量

xx==undefined

2.获取值的类型,可以通过typeof获取

alert(typeof('a')=='string');//number boolean

语句

顺序结构,从上往下执行

判断结构 if

var t = 1;
if(t == 2); 判断,建议将常量放左边
if (t = 2); 赋值true

选择结构 switch

var a = "bd";
switch(a){
  case "cc":
        alert("cc");
break;
  default:
      alert("default")
break;
}

循环结构 while for

while(t < 8) {};
for(var x = 0; x < 3; x++){document.write("a");}

其他 break continue

w:for(var x = 0; x < 3; x++){
      for (var y = 0; y < 4; y++) {
          doucument.write("a");
          continue:w;
      }
}

数组 对象类型(object)

1.定义数组两种方式

var arr =[]; var arr = [3,2,4];
var arr = new Array(); new Array(5);new Array(1,2,3,4,5);

2.arr.length 数组长度
3.遍历数组

for (var x = 0; x < arr.length; x++) {
    document.write("arr["+x+"]"+ arr[i]);
}

4.特点

  • 长度可变
  • 元素的类型是任意的。建议使用时存储同一类型的元素

函数

1.函数的格式

function 函数名(参数列表){
函数体;
return 返回值;如果没有返回值页可以省略return
}
函数名();调用

function add(x,y){
  return x + y;
}
var a = add(5,6);

2.只要使用了函数的名称,就是对这个函数的调用
3.函数中有一个数组有一个数组对传入的参数进行存储,这个数组就是arguments
4.函数调用没有加括号时,会返回方法定义的字符串

function a(){returen 100;}
var a = a// 会返回function a(){returen 100;}

动态函数

使用的是js中内置的一个对象Function

new Function("x,y","var sum; sum=x+y;return sum;");
add(4,8);

匿名函数

没有名字的函数,通常是函数的简写形式

var add = function(a,b){
    return a + b;
}
add(7,8);

变量

变量如果在script内声明变量在整个变量都有用----全局变量
变量在Function里面定义的是局部变量

<scrpit>
for (var x =0;x <3;x++) {}
doucment.write("x="+x);//x = 3 在本页面其他script里x也可以用
</script>

对象

Object

提供所有对象的通用方法。
object.toStrong()所有对象变成字符串对象
object.valueOf()返回指定对象的初始方法

String

1.定义

var str = new String("abc");
var str = "string";

2.常用方法

str.length长度(不是方法是属性没有括号)
str.bold()加粗使用Bhtml标签
str.concat()连接字符串
str.foncolor("red")字体颜色
str.link("http://b.com"); 链接
str.replace()替换
str.substr(1,3) 截取字符串 从哪开始长度
str.substring(1,3)//截取从哪开始到哪结束

3.自定义方法

 <script>
            function trim(str) {
                var start,end;
                start = 0;
                end = str.length - 1;
                while(start <= end && str.charAt(start)==' ') {
                    start++;
                }
                while(start <= end && str.charAt(end)==' ') {
                    end--;
                }
                return str.substring(start,end+1);
            }
            var s = "   a b c     ";
            alert(trim(s));
        </script>

4.prototype 属性

返回对象原型的引用,用这个属性提供对象的类的一组基本功能,相当于分类
给String的原型中添加一个功能

String.prototype.len = 180;
alert("sdf".len);//180

String.prototype.trim = function(){};//给字符串添加一个方法
str.trim();

Array

1.定义

var  arr = ["a","b","c'];
var arr = new Array(3);
var arr = new Array("","","")

2.方法

var arr = ["a","b"];
var arr2 = ["bc","dd"];
//连接数组
arr.concat("ds",arr2);//输出 ["a","b","ds","bc","dd"];
//join返回字符串,元素由指定分隔符分割
arr.join();//输出“a,b” arr.join("-") 输出 “a-b”;
//pop移除最后一个元素并返回该元素
arr.pop();//输出 “b”
//push 添加新元素(元素可以是数组),并返回数组的长度
arr.push("dd");//输出 3
//shift 移除第一个元素,输出被删除元素
arr.shift();//输出“a”
//slice 返回数组的一段
arr.slice(start,end);不包含end元素
//sort 排序
arr.sort();
//splice()删除元素,并可以元素进行替换,返回移除的元素
arr.splice(0,1,“dd”);输出"a", 数组变为 ["dd",b];
//unshift();将指定元素插入数组的第一个元素,并返回数组
arr.unshit("xx");//输出 ["xx","a","b"]

3.Array.prototype属性支持

Array.prototype.getMax = function(){};

Date对象

1.定义

var date = new Date();
var date = new Date(dateVal);
var date = new Date(y,m,d,[h,m,s.ms]);

2.方法

//parse 解析一个包含日期的字符串,返回1970.1.1与该日期的间隔毫秒值
Date.parse("7/16/2017")//1500134400000

with语法

为了简化对象内容的书写,可以使用js中的特有语句来完成

with(对象){
  在该区域中可以直接使用指定对象的内容,不需要写对象点
}
 var date = new Date();
            with(date){
                var year = getFullYear();
                var day = getDate();
                document.write(year+day);
            }

Math对象

Number对象

forin语法

var arr = [10,22,11,26];
for(i in arr){
    doucument.write(arr[i]);
}

自定义对象

如果想要自定义对象,应该先对对象进行描述,js是基于对象,不是面对对象。不具备描述事物的能力,我们还想按照面向对象思想编写js,就要先买搜索,在js中,可以用函数来模拟面向对象的描述

//第一种方式
//用js描述人,相当于构造器
function Persn(){
}
var p = new Person();
//动态给p对象添加属性,直接使用p.属性名即可
p.name = "name";
p.age = 29;
//如果定义的p对象的属性赋值为一个函数,即是给p对象添加一个方法
p.show = function(){};//p.show();

//第二种封装方式(描述事物)
function Person(name,age) {
//在给person对象添加两个属性
    this.name = name;
//对象添加属性访问其
  this.setName = function (name){
         this.name = name;
  }
  this.getName = function(){
       return this.name;
  }
}
var p = new Person("aaa",33);
p.setName("ss");
p.getName();

//第三种封装方式
var = pp {
  //定义一些成员
  "name":"sss",
  "age":33,
  "getName":function(){ return this.name; }
}
//对象调用成员的两种方式
var age = pp.age;
var age = pp["age"];

遍历对象

for (x in pp) {
 document.write(x+":"+pp[x]);
}
输出:name:ss   age:33   getName:function(){ return this.name; }

封装键值对方式

//myName和myAge不用先定义,用字符串也是可以的
var map = {
                myName:"sdf",
                myAge:12
            }
alert(map.myName+":"+map["myAge"]);//输出sdf:12
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容

  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 5,099评论 0 7
  • FreeCodeCamp - Basic JavaScript 写在前面: 我曾经在进谷前刷过这一套题,不过当时只...
    付林恒阅读 16,432评论 5 28
  • 古埃及金字塔看到的七十几座金字塔里面都是空的,奴隶大起义的时候将法老的尸体拖出来,里面的财富也被洗劫一空。有次考古...
    爱打蓝阅读 497评论 0 0
  • 今天是三十天写作训练营最后一天,要求写总结。1500字的大关,自己很少探及。说实话压力的确是有的,那么闲话少絮,总...
    静水且流深阅读 563评论 0 2
  • 鼎山我的是故园, 梦中,我回到鼎山。 那清晰再也不过的相聚, 那热忱再也不过的场面。 弟弟又苍老了许多, 但身子骨...
    陽光_86c1阅读 175评论 0 0